企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 9 – Lua 的完整语法 这是一份采用扩展 BNF 描述的 Lua 完整语法。 在扩展 BNF 中, {A} 表示 0 或多个 A , [A] 表示一个可选的 A 。 (操作符优先级,参见 [§3.4.8](#3.4.8); 对于最终符号,名字,数字,字符串字面量的解释,参见 [§3.1](#3.1)。) ``` chunk ::= block block ::= {stat} [retstat] 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] retstat ::= **return** [explist] [‘**;**’] label ::= ‘**::**’ Name ‘**::**’ funcname ::= Name {‘**.**’ Name} [‘**:**’ Name] varlist ::= var {‘**,**’ var} var ::= Name | prefixexp ‘**[**’ exp ‘**]**’ | prefixexp ‘**.**’ Name namelist ::= Name {‘**,**’ Name} explist ::= exp {‘**,**’ exp} exp ::= **nil** | **false** | **true** | Numeral | LiteralString | ‘**...**’ | functiondef | prefixexp | tableconstructor | exp binop exp | unop exp prefixexp ::= var | functioncall | ‘**(**’ exp ‘**)**’ functioncall ::= prefixexp args | prefixexp ‘**:**’ Name args args ::= ‘**(**’ [explist] ‘**)**’ | tableconstructor | LiteralString functiondef ::= **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** | ‘**#**’ | ‘**~**’ ```