2011-02-03 82 views
1

输入到词法分析器FLEX I很困惑

abc gef4 44jdjd ghghg 
x 
ererete 
xyzzz 
55k 
hello wold 
33 

我的规则

rule1 [0-9]+[a-zA-Z]+ 
rule2 [x-z] 
rule3 .* 

{规则1} { 的printf( “%S \ n” 个,yytext中); }

{rule2} { printf(“%s \ n”,yytext); }

{规则3} { //输出什么 }

输出: -

x 



55k 

我无法理解的输出?有人可以帮帮我吗。

+2

我也困惑,太... – 2011-02-03 16:53:24

+0

很多字符串正在与rule3匹配为什么呢?为什么rule3匹配单词44jdjd?它应该与rule1相匹配,因为rule1首先出现? – user574183 2011-02-03 17:03:29

回答

3

输入的第一个字符既不符合rule1也不符合rule2。相反,rule3将输入直至行尾。同样的情况在第3行,4,6,和7。你可能需要一个贪心不足规则3,即一个不占用空间:

[^ \t\n]*   /* Do nothing */ 

然后44jdjd是由规则1中。