flex进行scanner,将数值存入yylval。
而bison读取yylval之中的值。
神奇的yylval是int类型,如何让它存储多种类型呢?
以string为例:
需要在.l和.y的头部第一句加入:
#define YYSTYPE char*
在.l赋值的时候,要特别注意,需要拷贝字符串。
yylval = strdup(yytext); return WORD;
在.y取用的时候,直接强转就可以了。
(char*)$1
关于更优雅的实现方式,当然是用union啦,仿照上面,很容易写出来的。
I love this! I can’t believe you came up with it! What a fun & creative idea!Please share this at my link party, others have got to see this. 🙂 http://www.zetarmold.com
本人新手,最近在用flex和bison实现语法分析。碰到个问题。
请问如何用union实现
flex & bison 如何用yylval传递字符串值
no