2016-04-14 35 views
0

我想忽略整數的前導零 可以說我有00034我只接受43並忽略零。 我使用Flex和我想返回一個標記整數43忽略前導零並用flex分析器讀取其餘的零件

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

爲什麼?您不會返回文字。您返回標記INT,並且您還應該將atoi(yyext)存儲到yylval中。 這就是什麼需要照顧前導零。不是分析儀。你的規則應該是:

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