8. The complete suntax of lua

6 0 0
                                        

8 - The Complete Syntax of Lua

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 | '#'

Lua coding guideWhere stories live. Discover now