Lua
Sintaxes completas representadas por
Diagrama Sintático - Diagrama de Sintaxe
(
ver convenções
) ou
BNF
(ver
convenções
).
Diagrama Sintático - Diagrama de Sintaxe
|
Diagrama Sintático - Diagrama de Sintaxe e BNF
|
BNF
lua
: [(stat [';'])+] [(return [exp {',' exp}] | break ) [';']]
stat
: var {',' var} '=' exp {',' exp} | functioncall | repeat block until exp | if exp then block [(elseif exp then block)+] [else block] end | [(for (Name '=' exp ',' exp [',' exp]|Name {',' Name} in exp {',' exp})|while exp)] do block end | function funcname funcbody | local function Name funcbody | local (Name {',' Name}) ['=' exp {',' exp}]
funcname
: Name {'.' Name} [':' Name]
var
: Name | prefixexp '[' exp ']' | prefixexp '.' Name
exp
: nil | false | true | Number | String | '...' | function | prefixexp | tableconstructor | exp binop exp | unop exp
prefixexp
: var | functioncall | '(' exp ')'
functioncall
: prefixexp [ ':' Name] '(' [exp {',' exp}] ')' | tableconstructor | String
function
: 'function' funcbody
funcbody
: '(' [parlist] ')' block end
parlist
: namelist [',' '...'] | '...'
tableconstructor
: '{' [([('[' exp ']' | Name) '='] exp (',' | ';'|''))+] '}'
binop
: '+' | '-' | '*' | '/' | '^' | '%' | '..' | '<' | '<=' | '>' | '>=' | '==' | '~=' | and | or
unop
: '-' | not | '#'