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
1
.
lua
lua
: [(stat [';'])+] [(return [exp {',' exp}] | break ) [';']]
2
.
stat
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}]
3
.
funcname
funcname
: Name {'.' Name} [':' Name]
4
.
var
var
: Name | prefixexp '[' exp ']' | prefixexp '.' Name
5
.
exp
exp
: nil | false | true | Number | String | '...' | function | prefixexp | tableconstructor | exp binop exp | unop exp
6
.
prefixexp
prefixexp
: var | functioncall | '(' exp ')'
7
.
functioncall
functioncall
: prefixexp [ ':' Name] '(' [exp {',' exp}] ')' | tableconstructor | String
8
.
function
function
: 'function' funcbody
9
.
funcbody
funcbody
: '(' [parlist] ')' block end
10
.
parlist
parlist
: namelist [',' '...'] | '...'
11
.
tableconstructor
tableconstructor
: '{' [([('[' exp ']' | Name) '='] exp (',' | ';'|''))+] '}'
12
.
binop
binop
: '+' | '-' | '*' | '/' | '^' | '%' | '..' | '<' | '<=' | '>' | '>=' | '==' | '~=' | and | or
13
.
unop
unop
: '-' | not | '#'