给出以下输入:
int x = y;
和
int x = y();
LALR(1)语法有没有办法避免转移/减少冲突?转变/减少冲突决定在y
或继续(
时减少。
(这假设变量名可以是任何字母数字字符集,函数调用是括号后面的任何字母数字字符集。)
答案 0 :(得分:1)
这不是一个降低转移的冲突,除非标识符可能在没有函数调用的情况下紧跟(
。通常情况并非如此,尽管在C派生语言中,存在将强制转换表达式(type)(value)
与带括号的函数调用(function)(argument)
区分开来的问题。
如果您的语法没有表现出特定的C语言,那么LALR (1)语法可以根据(1)标记前瞻来决定转移和缩小:如果前瞻标记是(
,那么它会移动标识符;否则,它可以减少。