9 – Lua 的完整语法
这是一份采用扩展 BNF 描述的 Lua 完整语法。 在扩展 BNF 中, {A} 表示 0 或多个 A , [A] 表示一个可选的 A 。 (操作符优先级,参见 §3.4.8; 对于最终符号,名字,数字,字符串字面量的解释,参见 §3.1。)
- chunk ::= block
- block ::= {stat} [retstat]
- stat ::= ‘;’ |
- varlist ‘=’ explist |
- functioncall |
- label |
- break |
- goto Name |
- 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 explist do block end |
- function funcname funcbody |
- local function Name funcbody |
- local namelist [‘=’ explist]
- retstat ::= return [explist] [‘;’]
- label ::= ‘::’ Name ‘::’
- funcname ::= Name {‘.’ Name} [‘:’ Name]
- varlist ::= var {‘,’ var}
- var ::= Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name
- namelist ::= Name {‘,’ Name}
- explist ::= exp {‘,’ exp}
- exp ::= nil | false | true | Numeral | LiteralString | ‘...’ | functiondef |
- prefixexp | tableconstructor | exp binop exp | unop exp
- prefixexp ::= var | functioncall | ‘(’ exp ‘)’
- functioncall ::= prefixexp args | prefixexp ‘:’ Name args
- args ::= ‘(’ [explist] ‘)’ | tableconstructor | LiteralString
- functiondef ::= function funcbody
- funcbody ::= ‘(’ [parlist] ‘)’ block end
- parlist ::= namelist [‘,’ ‘...’] | ‘...’
- tableconstructor ::= ‘{’ [fieldlist] ‘}’
- fieldlist ::= field {fieldsep field} [fieldsep]
- field ::= ‘[’ exp ‘]’ ‘=’ exp | Name ‘=’ exp | exp
- fieldsep ::= ‘,’ | ‘;’
- binop ::= ‘+’ | ‘-’ | ‘*’ | ‘/’ | ‘//’ | ‘^’ | ‘%’ |
- ‘&’ | ‘~’ | ‘|’ | ‘>>’ | ‘<<’ | ‘..’ |
- ‘<’ | ‘<=’ | ‘>’ | ‘>=’ | ‘==’ | ‘~=’ |
- and | or
- unop ::= ‘-’ | not | ‘#’ | ‘~’
最后更新时间: 2015年1月18日19:54