2011-02-03 66 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中。