忽略前导零并使用flex analyzer

时间:2016-04-14 22:57:31

标签: regex flex-lexer

我想忽略整数的前导零 假设我有00034我想只接受43而忽略零。 我正在使用flex,我想返回一个整数43的令牌

NUMBER [1-9][0-9]*|0
ZEROS 00+

然后:

{ZEROS}  { /*DO NOTHING*/ } 
{NUMBER} { return INT; }

但是有一个问题,因为当我尝试0032时,我得到了正确的结果但是当我尝试032时,它返回0作为int,32作为int。

如果我使用:

NUMBER [1-9][0-9]*|0
ZEROS 00*

忽略单个零点。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

为什么呢?您不会返回文本。您返回令牌INT,并且还应将atoi(yyext)存储到yylval那是照顾前导零的东西。不是分析仪。你的规则应该是:

[0-9]+ { yylval.intValue = atoi(yytext); return INT; }