Есть два выражения в правилах для lex'а:
something
[a-zA-Z ]
Если лексеру подают на вход строку "there is something wrong", то она вся попадает под второе правило и становится одной лексемой, так как это правило соответствует большему числу символов. Ну а мне нужна не одна лексема, а три - "there is ", "something" и " wrong".
Как это сделать, чтобы работало и выглядело покрасивше?
Lex (распознавание лексем)
Модератор: Модераторы разделов
-
- Сообщения: 153
Re: Lex
Ну так все правильно, у тебя следующее регулярное выражение [a-zA-Z ], под него попадают все строчки которые содержат прописные и заглавные буквы алфавита и пробелы. Так что, строка there is something wrong начиная с первого символа и заканчивая последним, попадает под это выражение.
-
- Сообщения: 2
- ОС: GNU/Linux
Re: Lex
Э-эм, ну это понятно. А как мне переделать правила так, чтобы оно разбивало строку на три лексемы?
-
- Сообщения: 153
Re: Lex
AlexanderMarkov писал(а): ↑22.02.2009 12:46Э-эм, ну это понятно. А как мне переделать правила так, чтобы оно разбивало строку на три лексемы?
Убери пробел в конце регулярного выражения, т.е. [a-zA-Z].
-
- Сообщения: 1685
- ОС: SuSe 10.2