본문 바로가기

3.구현/Lua

루아의 BNF

다음은 루아의 BNF이다. www.lua.org에 document 자료를 참조 했으며 5.1 기준이다.

Here is the complete syntax of Lua in extended BNF. (It does not describe operator precedences.)


chunk ::= {stat [';']} [laststat [';']]
block ::= chunk
stat ::=  varlist '=' explist |
    functioncall |
    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
funcname ::= Name {'.' Name} [':' Name]
varlist ::= var {',' var}
var ::=  Name | prefixexp '[' exp ']' | prefixexp '.' Name
namelist ::= Name {',' Name}
explist ::= {exp ','} exp
exp ::=  nil | false | true | Number | String | '...' | function |
              prefixexp | tableconstructor | exp binop exp | unop exp
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 | '#'



반응형

'3.구현 > Lua' 카테고리의 다른 글

4. Lua의 조건문 반복문  (0) 2008.01.21
3. Lua의 각종 연산자들  (0) 2007.07.23
2. Lua 함수에 대해서  (0) 2007.07.20
1. 루아 스크립트 기초  (0) 2007.07.19
Lua 시작하기  (0) 2007.07.13