LALR(1)语法如何区分变量和函数调用



给定以下输入:

int x = y;

int x = y();

LALR(1)语法有什么方法可以避免移位/减少冲突吗?移位/减少冲突是决定在CCD_ 1处减少或继续到CCD_。

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

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

如果你的语法没有表现出那种特殊的C wierdness,那么LALR(1)语法可以根据的标记lookahead在移位和约简之间做出决定:如果lookahead标记是(,那么它会移位标识符;否则,它可以减少。

相关内容

  • 没有找到相关文章

最新更新