1
extdefs:
{$<ttype>$ = NULL_TREE; } extdef
| extdefs {$<ttype>$ = NULL_TREE; } extdef
;
它为什么在中间?当yacc {code}在中间时是什么意思?
extdefs:
{$<ttype>$ = NULL_TREE; } extdef
| extdefs {$<ttype>$ = NULL_TREE; } extdef
;
它为什么在中间?当yacc {code}在中间时是什么意思?
它可能无处不在。有时,在令牌之间做些事情是很有用的,特别是在这种或表达式中。
在yacc
实用的standard说明它说:
操作可以在规则 (不只是在结尾)的任何地方发生;一个动作可以通过 访问由动作返回的值到其左边的 ,并且依次返回值 可以通过动作访问到 它的权利。出现在中间 一个规则的动作,应等于 用新 非结束符替换操作和添加具有在左手侧,非终端 符号的 空规则。与 新规则相关的 语义操作应等同于原始操作的 。在规则内使用动作 可能引入冲突 ,否则将不会存在。
你能详细点吗? – assem 2011-03-15 10:34:28
@assem:我更新答案。 – 2011-03-15 13:23:09
这里'$ $'是什么意思? –
assem
2011-03-16 05:31:53