当yacc {code}处于中间位置时意味着什么?

时间:2011-03-15 09:00:52

标签: yacc bison

extdefs:
    {$<ttype>$ = NULL_TREE; } extdef
    | extdefs {$<ttype>$ = NULL_TREE; } extdef
    ;

为什么它在中间?

1 个答案:

答案 0 :(得分:0)

它可能无处不在。有时在令牌之间完成某些操作很有用,特别是在这种表达式中。

yacc实用程序的standard说明中,它说:

  

可以在规则中的任何位置执行操作   (不只是在最后);行动可以   访问操作返回的值   它的左边,反过来它的价值   可以通过操作来访问返回   这是正确的。一个动作出现在   中间的规则应该是等同的   用新的替换动作   非终端符号并添加   与非终端的空规则   左侧的符号。该   与语义相关的语义动作   新规则应相当于   原始行动。使用行动   规则内部可能会引入冲突   否则就不会存在。