不确定如何为$$分配一个令牌的值

时间:2017-03-04 02:28:53

标签: c parsing yacc

我想给$$一个令牌的价值。

例如:相关代码

%token VOID

... Yacc Code...

variableType : VOID {}; /*How to I assign variableType to the token VOID.*/

我认为这将是$$ = $ 1,但这是不正确的,因为$ 1会查找该值,但这是一个令牌。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

我想你想要$$ = VOID;

在bison / yacc中,令牌是小的整数,并且它们被赋予名称,其中enum声明插入生成的解析器和生成的头文件中,这就是扫描程序可以使用它来返回令牌的方式

如果您打算将令牌void的语义值作为令牌的枚举值VOID,那么它可能比词法分析器中的语义值更清晰,使用像yylval = VOID; return yylval;甚至return (yylval = VOID);这样的词法分析器操作。然后,您可以在解析器操作中使用$1

但是,我并不是说使用令牌枚举识别类型是一个好主意。