Category Archives: 计算机技术

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
关于更优雅的实现方式,当然[......]

继续阅读

让flex中支持中文scanner

这里的flex,指的是GNU flex,用于编译器,词法解析。不是Flash哪个哈。

flex一般来说,只支持按照,但我们可以用复杂的正则表达式进行拓展,支持UTF8是木有问题的。

转载自:stackoverflow,http://stackoverflow.com/questions/9611682/flexlexer-support-for-unicode/9617585#9617585

Flex does not support Unicode. However, Fle[......]

继续阅读