0

给定以下输入:

int x = y;

int x = y();

LALR(1) 语法有什么方法可以避免移位/减少冲突?转移/减少冲突决定减少y或继续减少(

(这是假设变量名可以是任何字母数字字符集,而函数调用是括号后的任何字母数字字符集。)

4

1 回答 1

1

这不是一个移位减少冲突,除非一个标识符可以紧跟一个(而不是函数调用。通常情况并非如此,尽管在 C 派生语言中,存在将强制转换表达式(type)(value)与括号函数调用区分开来的问题(function)(argument)

如果您的语法没有表现出特定的 C 怪异,那么 LALR (1)语法可以根据(1)标记前瞻来决定移位和减少:如果前瞻标记是 a (,那么它会移位标识符;否则,它可以减少。

于 2013-07-21T21:32:39.373 回答