сгибать я в замешательстве - PullRequest
1 голос
/ 03 февраля 2011

вход для лексера

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   

Я не могу понять вывод? Может кто-нибудь, пожалуйста, помогите мне.

1 Ответ

3 голосов
/ 03 февраля 2011

Первый символ ввода не соответствует ни правилу1, ни правилу2.Вместо этого rule3 ест ввод до конца строки.То же самое происходит в строках 3, 4, 6 и 7. Возможно, вам нужно менее жадное правило 3, то есть то, которое не использует пробелы:

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

Тогда 44jdjd находится по правилу1.

...