extdefs:
{$<ttype>$ = NULL_TREE; } extdef
| extdefs {$<ttype>$ = NULL_TREE; } extdef
;
为什么它在中间?
答案 0 :(得分:0)
它可能无处不在。有时在令牌之间完成某些操作很有用,特别是在这种或表达式中。
在yacc
实用程序的standard说明中,它说:
可以在规则中的任何位置执行操作 (不只是在最后);行动可以 访问操作返回的值 它的左边,反过来它的价值 可以通过操作来访问返回 这是正确的。一个动作出现在 中间的规则应该是等同的 用新的替换动作 非终端符号并添加 与非终端的空规则 左侧的符号。该 与语义相关的语义动作 新规则应相当于 原始行动。使用行动 规则内部可能会引入冲突 否则就不会存在。