Structs
varlist ‘=’ explist
exp binop exp
block ::= {stat} [retstat]
elseif exp then block
for namelist in explist do block end
for Name ‘=’ exp ‘,’ exp [‘,’ exp] do block end
funcbody ::= ‘(’ [parlist] ‘)’ block end
funcname ::= Name {‘.’ Name} [‘:’ Name]
functioncall ::= prefixexp args | prefixexp ‘:’ Name args
function funcname funcbody
if exp then block {elseif exp then block} [else block] end
prefixexp ‘[’ exp ‘]’
local namelist [‘=’ explist]
local function Name funcbody
Name
parlist ::= namelist [‘,’ ‘…’] | ‘…’
prefixexp ‘.’ Name
repeat block until exp
tableconstructor ::= ‘{’ [fieldlist] ‘}’
unop exp
while exp do block end
Enums
args ::= ‘(’ [explist] ‘)’ | tableconstructor | LiteralString
binop ::= ‘+’ | ‘-’ | ‘*’ | ‘/’ | ‘//’ | ‘^’ | ‘%’ |
‘&’ | ‘~’ | ‘|’ | ‘>>’ | ‘<<’ | ‘..’ |
‘<’ | ‘<=’ | ‘>’ | ‘>=’ | ‘==’ | ‘~=’ |
and | or
exp ::= nil | false | true | Numeral | LiteralString | ‘…’ | functiondef |
prefixexp | tableconstructor | exp binop exp | unop exp
field ::= ‘[’ exp ‘]’ ‘=’ exp | Name ‘=’ exp | exp
prefixexp ::= var | functioncall | ‘(’ exp ‘)’
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]
unop ::= ‘-’ | not | ‘#’ | ‘~’
var ::= Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name