为什么我必须在下面的语法片段中明确使用finalize
?
我认为trap
行会消除这种需要,以便我可以简单地放置$<nVal>4
?
是不是可以对%type <nVal> expr
使用不同的定义,以便我可以?
$4
在rici的回答之后更新。这现在有效:
expr
答案 0 :(得分:2)
为什么我必须在下面的语法片段中明确使用
$<nVal>4
?
实际上,如果您想引用$5
,则应使用expr
。 $4
是tkEQUALS
,它没有声明的类型,因此必须明确键入任何用法。 $3
是之前的中间操作,由于未在该操作中分配$$
,因此没有任何值。
按照同样的逻辑,第二个expr
是$8
; $6
是第二个中间行动,也没有任何价值(也没有类型)。
请参阅Bison manual:
中规则操作本身被视为规则的一个组成部分。如果稍后在同一规则中有另一个操作(并且通常在结束时还有另一个操作),则会产生差异:在计算要使用的数字 n 时,您必须计算操作以及符号在
$n
。