返回介绍

8 - The Complete Syntax of Lua

发布于 2019-08-25 13:16:40 字数 2471 浏览 959 评论 0 收藏 0

Here is the complete syntax of Lua in extended BNF. (It does not describe operator precedences.)

	chunk ::= {stat [`;´]} [laststat [`;´]]
	block ::= chunk
	stat ::= varlist1 `=´ explist1 | 
		 functioncall | 
		 do block end | 
		 while exp do block end | 
		 repeat block until exp | 
		 if exp then block {elseif exp then block} [else block] end | 
		 for Name `=´ exp `,´ exp [`,´ exp] do block end | 
		 for namelist in explist1 do block end | 
		 function funcname funcbody | 
		 local function Name funcbody | 
		 local namelist [`=´ explist1] 
	laststat ::= return [explist1] | break
	funcname ::= Name {`.´ Name} [`:´ Name]
	varlist1 ::= var {`,´ var}
	var ::= Name | prefixexp `[´ exp `]´ | prefixexp `.´ Name 
	namelist ::= Name {`,´ Name}
	explist1 ::= {exp `,´} exp
	exp ::= nil | false | true | Number | String | `...´ | function | 
		 prefixexp | tableconstructor | exp binop exp | unop exp 
	prefixexp ::= var | functioncall | `(´ exp `)´
	functioncall ::= prefixexp args | prefixexp `:´ Name args 
	args ::= `(´ [explist1] `)´ | tableconstructor | String 
	function ::= function funcbody
	funcbody ::= `(´ [parlist1] `)´ block end
	parlist1 ::= namelist [`,´ `...´] | `...´
	tableconstructor ::= `{´ [fieldlist] `}´
	fieldlist ::= field {fieldsep field} [fieldsep]
	field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | exp
	fieldsep ::= `,´ | `;´
	binop ::= `+´ | `-´ | `*´ | `/´ | `^´ | `%´ | `..´ | 
		 `<´ | `<=´ | `>´ | `>=´ | `==´ | `~=´ | 
		 and | or
	unop ::= `-´ | not | `#´


Last update: Mon Jun 5 17:05:27 BRT 2006

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文