Bison Grammar%type和%token

时间:2017-05-10 01:21:06

标签: grammar bison flex-lexer yacc

为什么我必须在下面的语法片段中明确使用finalize

我认为trap行会消除这种需要,以便我可以简单地放置$<nVal>4

是不是可以对%type <nVal> expr使用不同的定义,以便我可以?

$4
在rici的回答之后

更新。这现在有效:

expr

1 个答案:

答案 0 :(得分:2)

  

为什么我必须在下面的语法片段中明确使用$<nVal>4

实际上,如果您想引用$5,则应使用expr$4tkEQUALS,它没有声明的类型,因此必须明确键入任何用法。 $3是之前的中间操作,由于未在该操作中分配$$,因此没有任何值。

按照同样的逻辑,第二个expr$8; $6是第二个中间行动,也没有任何价值(也没有类型)。

请参阅Bison manual

  

中规则操作本身被视为规则的一个组成部分。如果稍后在同一规则中有另一个操作(并且通常在结束时还有另一个操作),则会产生差异:在计算要使用的数字 n 时,您必须计算操作以及符号在$n