我读了lua grammar
查看“exp operatorMulDivMod exp”的一部分 或“exp operatorAddSub exp”或其他
我想我可以用那个语法构建2个解析树吗? 例子: a + b + c 要么 a + b * c
答案 0 :(得分:1)
您给出的示例分别由关联性和优先级处理。
但是语法中有歧义。让我们看看以下内容:
f()
( x or y )()
它可以解析为两个语句,一个语句不带任何参数地调用f
,然后不带任何参数地调用x
或y
。
但是至少有一个编译器将其解析为包含三个函数调用的单个语句。
f()( g or h )()
如果要使用以前的解释,可以使用;
进行歧义。
f();
( x or y )()
后一种解释很可能是对编译器的解释。尽管可以将中间结果存储在变量中,但可以使用parens来确保这种解释。