我想给$$一个令牌的价值。
例如:相关代码
%token VOID
... Yacc Code...
variableType : VOID {}; /*How to I assign variableType to the token VOID.*/
我认为这将是$$ = $ 1,但这是不正确的,因为$ 1会查找该值,但这是一个令牌。任何帮助将不胜感激。
答案 0 :(得分:2)
我想你想要$$ = VOID;
。
在bison / yacc中,令牌是小的整数,并且它们被赋予名称,其中enum
声明插入生成的解析器和生成的头文件中,这就是扫描程序可以使用它来返回令牌的方式
如果您打算将令牌void
的语义值作为令牌的枚举值VOID
,那么它可能比词法分析器中的语义值更清晰,使用像yylval = VOID; return yylval;
甚至return (yylval = VOID);
这样的词法分析器操作。然后,您可以在解析器操作中使用$1
。
但是,我并不是说使用令牌枚举识别类型是一个好主意。