跳转至内容

Lua 编程/语法术语表

来自维基教科书,开放的书籍,为开放的世界

这是一个关于语法术语的词汇表。它面向 Lua。

表达式
可以求值的语法元素
语句
可以执行的语法元素
操作数
表达式
函数参数
表达式
函数参数
标识符
函数调用
一个既可以作为语句又可以作为表达式的语法元素。包含一个函数表达式(一个求值为函数的表达式;通常只是一个函数的标识符),并且可以包含一个或多个参数。
表索引
表达式
表索引
由表表达式(一个求值为表的表达式,通常是表的标识符)和索引组成的表达式
运算符
一个语法元素,与一个(一元运算符)、两个(二元运算符)、三个(三元运算符)或更多个操作数组合在一起,形成一个表达式
条件
表达式(在某些语言中,此表达式必须求值为布尔值)
函数定义
包含函数名的语句,以及匿名函数(在函数定义中未给函数命名)时的表达式
表构造函数
创建一个表的表达式。可以包含表达式(值)或表达式对(键和值)。

赋值中的 = 符号不是运算符,因为标识符不是操作数或表达式。

函数调用既可以作为语句,也可以作为表达式使用。它们是语句,因为它们可以执行并放在自己的行上,但它们也是表达式,因为它们可以求值(它们可以返回值)。这就是为什么你可以将函数调用放在自己的行上,也可以在操作中使用它。在某些语言中,如果赋值返回一个值,则赋值也可以用作语句或表达式。

根据上述定义,表达式可以非常复杂,因为它们可以包含其他表达式。语句可以包含表达式(例如条件语句中的条件),但也可以包含其他语句(例如计数控制循环(也称为 for 循环)的主体)。语句也可以包含标识符。

语法分析示例

[编辑 | 编辑源代码]
for i = 1, 5 do
	var = 4 + foo("this is a " .. {4, 3, "snow" .. "ball"}[3])
end

在上面的示例中,有一个计数控制语句,它包含一个标识符 (i)、两个表达式 (15) 和一个语句(do 关键字和 end 关键字之间的行)。

计数控制语句中包含的语句是一个赋值语句,它包含一个标识符 (var) 和一个带有两个操作数 (4 和对 foo 函数的调用,带有一些参数) 的运算符。运算符是加法运算符,它有两个操作数,所以它是二元运算符。

第二个操作数是一个函数调用。在该函数调用的参数中有一个表达式。该表达式是二元减号运算符 (-,如 2 - 1 ; 还有一个一元减号运算符,如 -5) 与两个操作数 "this is a " 和表索引的组合。表索引包含一个表构造函数和一个索引 (3)。在表构造函数中,有三个表达式,其中一个是由连接运算符与两个操作数组合而成的。表索引求值为 "snowball"。此结果与 "this is a " 连接在一起,得到 "this is a snowball",它被发送到 foo 函数作为参数。然后,此函数返回一个值,该值加到数字 4 上,并将结果分配给变量 var。由于计数控制循环的存在,这将执行五次。

华夏公益教科书