Lex (распознавание лексем)

Модератор: Модераторы разделов

AlexanderMarkov
Сообщения: 2
ОС: GNU/Linux

Lex

Сообщение AlexanderMarkov »

Есть два выражения в правилах для lex'а:
something
[a-zA-Z ]
Если лексеру подают на вход строку "there is something wrong", то она вся попадает под второе правило и становится одной лексемой, так как это правило соответствует большему числу символов. Ну а мне нужна не одна лексема, а три - "there is ", "something" и " wrong".
Как это сделать, чтобы работало и выглядело покрасивше?
Спасибо сказали:
Serg79
Сообщения: 153

Re: Lex

Сообщение Serg79 »

Ну так все правильно, у тебя следующее регулярное выражение [a-zA-Z ], под него попадают все строчки которые содержат прописные и заглавные буквы алфавита и пробелы. Так что, строка there is something wrong начиная с первого символа и заканчивая последним, попадает под это выражение.
Спасибо сказали:
AlexanderMarkov
Сообщения: 2
ОС: GNU/Linux

Re: Lex

Сообщение AlexanderMarkov »

Э-эм, ну это понятно. А как мне переделать правила так, чтобы оно разбивало строку на три лексемы?
Спасибо сказали:
Serg79
Сообщения: 153

Re: Lex

Сообщение Serg79 »

AlexanderMarkov писал(а):
22.02.2009 12:46
Э-эм, ну это понятно. А как мне переделать правила так, чтобы оно разбивало строку на три лексемы?

Убери пробел в конце регулярного выражения, т.е. [a-zA-Z].
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Lex

Сообщение Denjs »

чую что тогда будет 4 лексемы на выходе))
а автор хочет что бы "there is" было вместе.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали: