Module ast Copy item path Source Assignment varlist ‘=’ explist BinExp exp binop exp Block block ::= {stat} [retstat] ElseIf elseif exp then block ForIn for namelist in explist do block end ForRange for Name ‘=’ exp ‘,’ exp [‘,’ exp] do block end FuncBody funcbody ::= ‘(’ [parlist] ‘)’ block end FuncName funcname ::= Name {‘.’ Name} [‘:’ Name] FunctionCall functioncall ::= prefixexp args | prefixexp ‘:’ Name args FunctionDef function funcname funcbody IfBlock if exp then block {elseif exp then block} [else block] end IndexExpr prefixexp ‘[’ exp ‘]’ LocalAssignment local namelist [‘=’ explist] LocalFunctionDef local function Name funcbody Name Name Params parlist ::= namelist [‘,’ ‘…’] | ‘…’ PropertyAccess prefixexp ‘.’ Name RepeatBlock repeat block until exp TableConstructor tableconstructor ::= ‘{’ [fieldlist] ‘}’ UnExp unop exp WhileBlock while exp do block end Args args ::= ‘(’ [explist] ‘)’ | tableconstructor | LiteralString BinOp binop ::= ‘+’ | ‘-’ | ‘*’ | ‘/’ | ‘//’ | ‘^’ | ‘%’ |
‘&’ | ‘’ | ‘|’ | ‘>>’ | ‘<<’ | ‘..’ |
‘<’ | ‘<=’ | ‘>’ | ‘>=’ | ‘==’ | ‘=’ |
and | or Expr exp ::= nil | false | true | Numeral | LiteralString | ‘…’ | functiondef |
prefixexp | tableconstructor | exp binop exp | unop exp Field field ::= ‘[’ exp ‘]’ ‘=’ exp | Name ‘=’ exp | exp PrefixExpr prefixexp ::= var | functioncall | ‘(’ exp ‘)’ Stat 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 unop ::= ‘-’ | not | ‘#’ | ‘~’ Var var ::= Name | prefixexp ‘[’ exp ‘]’ | prefixexp ‘.’ Name