yacc的含义是什么?

时间:2011-03-13 09:40:48

标签: yacc

%right <code> UNARY PLUSPLUS MINUSMINUS

2 个答案:

答案 0 :(得分:0)

如果您有shift / reduce警告,则意味着解析器可以在堆栈中添加令牌或使用某些规则减少令牌。默认情况下,它选择“移位”,这告诉它尽可能减少该令牌。

一般来说,除非你有一个非常奇怪的语法,否则它的默认变换是你想要发生的事情(我想不出任何我希望它减少的实例,但它的原因是这样的...... )。

一般来说,你只想说%左边代替某些代币,只是为了删除shift / reduce警告

答案 1 :(得分:0)

可能bison manual会有所帮助。 此声明指定令牌UNARY PLUSPLUS MINUSMINUS 正确联想。 <code>表示这些令牌的语义值的类型 在这种情况下,我假设在{。}}中声明了以下union 源代码:

%union {
  ...
  <some-type> code;
  ...
}

希望这有帮助