lua BNF

来源:互联网 发布:linux设备驱动 编辑:程序博客网 时间:2024/05/16 09:21

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

chunk ::= {stat [`;´]} [laststat [`;´]]block ::= chunkstat ::=  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] | breakfuncname ::= Name {`.´ Name} [`:´ Name]varlist1 ::= var {`,´ var}var ::=  Name | prefixexp `[´ exp `]´ | prefixexp `.´ Name namelist ::= Name {`,´ Name}explist1 ::= {exp `,´} expexp ::=  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 funcbodyfuncbody ::= `(´ [parlist1] `)´ block endparlist1 ::= namelist [`,´ `...´] | `...´tableconstructor ::= `{´ [fieldlist] `}´fieldlist ::= field {fieldsep field} [fieldsep]field ::= `[´ exp `]´ `=´ exp | Name `=´ exp | expfieldsep ::= `,´ | `;´binop ::= `+´ | `-´ | `*´ | `/´ | `^´ | `%´ | `..´ |  `<´ | `<=´ | `>´ | `>=´ | `==´ | `~=´ |  and | orunop ::= `-´ | not | `#´
 
原创粉丝点击