Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Лексический анализатор - детерминированый автомат или регулярыне выражения

274
23 ноября 2007 года
Lone Wolf
1.3K / / 26.11.2006
Мне нужно реализовать лексический анализатор(после будет и синтаксический - алгоритм LL(1)) для подмножетва одного из языков. Вот задался вопросом. Как лучше делать, стандартным решением используя детерминированый автомат, иоли можна как-то красиво исхитриться и выделить все лексемы используя регулярные выражения?
Кто что может посоветовать?
260
23 ноября 2007 года
Ramon
1.1K / / 16.08.2003
Если то, что надо описать просто само по себе то хватит и регулярных выражений, если что-то серьезнее то Lex + Yacc(Flex + Bison) или Coco/R в помощь.

PS: Степень простоты или сложности оценить не представляется возможным ибо что за подмножество? какого языка?.....
274
23 ноября 2007 года
Lone Wolf
1.3K / / 26.11.2006
Степень сложности минимальная. Это лаба в универе. В качестве языка выбрал PHP, но это не суть важно.
Дилема в следуйщем. Существует стандартный подход при написани лексических анализаторов, а именно, использование автоматов. Т.е. читаем посимвольно входной поток и в зависимости от встречаемого символа автомат решает какая это лексема есть или может быть.
А я вот думаю попробовать использовать регулярные выражения, но есть опасения, что с их помощью трудно будет выделять лексемы. Вот я и спрашиваю у вас совета, имеет смысл пытаться или я протсо угроблю уйму времени(а сроки ограничены)
391
23 ноября 2007 года
Archie
562 / / 03.02.2005
Coco/R очень хорошая штука, рекомендую, если хочешь быстро и качественно сделать что-то работоспособное.
Если же у тебя исследовательский проект - так и думай / пробуй все что в голову придет :) Да, Coco/R не поддерживает PHP...
260
23 ноября 2007 года
Ramon
1.1K / / 16.08.2003
Думаю, что проще всего будет заюзать Coco/R.

PS:
Цитата:
Coco/R не поддерживает PHP

- он не умеет PHP код генерить, а описать с его помощью PHP не проблема.

274
24 ноября 2007 года
Lone Wolf
1.3K / / 26.11.2006
А этот Coco/R что из себя представляет? он выдает готовый код реализации лексического анализатора?
просто у меня задаей стоит изучение правил и методики построения, работы лексического и синтаксического анализотаров(а глобальнее компиляторов). Т.е. специальные пакеты использывать нельзя. мне надо самостоятельно написать лексический анализатор.
P.S. Пишу на JAVA для подмножества языка PHP.
391
24 ноября 2007 года
Archie
562 / / 03.02.2005
Coco/R - это спецпакет. На выходе генерирует код, близкий к тому, что тебе нужно написать самому.
274
24 ноября 2007 года
Lone Wolf
1.3K / / 26.11.2006
понятно. большое спасибо.
7.6K
30 ноября 2007 года
Darien
125 / / 15.01.2006
Конавт является программной реализацией любого соотвествующего ему регвыра. Жалко, что ваш препод вам этой принципиальной разницы (а точнее её отсутствия не объяснил). Теперь к делу: лекс анализаторы можно делать автоматически, например, прогами, которые рекомендовали выше. Хотя я такие в первый раз вижу. Самые популярные это Lex для лексического анализа и yacc для парсинга. Причём в Linux они уже есть. Для Win32 они тоже, конечно, есть. Ну и второе: если вы вдруг захотите сделать конавт ручками, то нужно написать явно код, который будет моделировать работу этого автомата.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог