flex & bison 如何用yylval传递字符串值

flex进行scanner,将数值存入yylval。

而bison读取yylval之中的值。

神奇的yylval是int类型,如何让它存储多种类型呢?

以string为例:

需要在.l和.y的头部第一句加入:

#define YYSTYPE char*

在.l赋值的时候,要特别注意,需要拷贝字符串。

yylval = strdup(yytext);  return WORD;

在.y取用的时候,直接强转就可以了。

(char*)$1

关于更优雅的实现方式,当然是用union啦,仿照上面,很容易写出来的。

3 thoughts on “flex & bison 如何用yylval传递字符串值

  1. 本人新手,最近在用flex和bison实现语法分析。碰到个问题。

    请问如何用union实现
    flex & bison 如何用yylval传递字符串值

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *