not logged in | [Login]
Based on Section 8 of the Lua 5.1 Reference Manual, including literal extensions for the FFI and selectively incorporated features from Lua 5.2.
chunk ::= {stat [`;´]} [laststat [`;´]]
block ::= chunk
stat ::= varlist `=´ explist |
functioncall |
lua52_label |
`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]
laststat ::= `return´ [explist] | `break´ | lua52_goto
lua52_goto ::= `goto´ Name
lua52_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´ | numeric | String | `...´ | function |
prefixexp | tableconstructor | exp binop exp | unop exp
numeric ::= FFI_Int64 | FFI_Uint64 | FFI_Imaginary | Number
prefixexp ::= var | functioncall | `(´ exp `)´
functioncall ::= prefixexp args | prefixexp `:´ Name args
args ::= `(´ [explist] `)´ | tableconstructor | String
function ::= `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´ | `#´