lua语言的语法是否含糊不清?

时间:2017-07-28 17:47:49

标签: lua grammar ambiguous

我读了lua grammar

我看到了enter image description here

查看“exp operatorMulDivMod exp”的一部分 或“exp operatorAddSub exp”或其他

我想我可以用那个语法构建2个解析树吗? 例子: a + b + c 要么 a + b * c

1 个答案:

答案 0 :(得分:1)

您给出的示例分别由关联性和优先级处理。

但是语法中有歧义。让我们看看以下内容:

f()
( x or y )()

它可以解析为两个语句,一个语句不带任何参数地调用f,然后不带任何参数地调用xy

但是至少有一个编译器将其解析为包含三个函数调用的单个语句。

f()( g or h )()

如果要使用以前的解释,可以使用;进行歧义。

f();
( x or y )()

后一种解释很可能是对编译器的解释。尽管可以将中间结果存储在变量中,但可以使用parens来确保这种解释。