输入词法分析器
abc gef4 44jdjd ghghg
x
ererete
xyzzz
55k
hello wold
33
我的规则
rule1 [0-9]+[a-zA-Z]+
rule2 [x-z]
rule3 .*
{rule1} { printf(“%s \ n”,yytext); }
{rule2} { printf(“%s \ n”,yytext); }
{rule3} { //什么都不打印 }
输出: -
x
55k
我无法理解输出?有人可以帮助我。
答案 0 :(得分:3)
输入的第一个字符既不匹配rule1也不匹配rule2。相反,rule3将输入放到行尾。第3,第4,第6和第7行也是如此。你可能想要一个不那么贪婪的规则3,即一个不消耗空格的规则:
[^ \t\n]* /* Do nothing */
然后由rule1找到44jdjd。