Лексический анализатор - детерминированый автомат или регулярыне выражения
Кто что может посоветовать?
PS: Степень простоты или сложности оценить не представляется возможным ибо что за подмножество? какого языка?.....
Дилема в следуйщем. Существует стандартный подход при написани лексических анализаторов, а именно, использование автоматов. Т.е. читаем посимвольно входной поток и в зависимости от встречаемого символа автомат решает какая это лексема есть или может быть.
А я вот думаю попробовать использовать регулярные выражения, но есть опасения, что с их помощью трудно будет выделять лексемы. Вот я и спрашиваю у вас совета, имеет смысл пытаться или я протсо угроблю уйму времени(а сроки ограничены)
Если же у тебя исследовательский проект - так и думай / пробуй все что в голову придет :) Да, Coco/R не поддерживает PHP...
PS:
Цитата:
Coco/R не поддерживает PHP
- он не умеет PHP код генерить, а описать с его помощью PHP не проблема.
просто у меня задаей стоит изучение правил и методики построения, работы лексического и синтаксического анализотаров(а глобальнее компиляторов). Т.е. специальные пакеты использывать нельзя. мне надо самостоятельно написать лексический анализатор.
P.S. Пишу на JAVA для подмножества языка PHP.
Coco/R - это спецпакет. На выходе генерирует код, близкий к тому, что тебе нужно написать самому.
понятно. большое спасибо.
Конавт является программной реализацией любого соотвествующего ему регвыра. Жалко, что ваш препод вам этой принципиальной разницы (а точнее её отсутствия не объяснил). Теперь к делу: лекс анализаторы можно делать автоматически, например, прогами, которые рекомендовали выше. Хотя я такие в первый раз вижу. Самые популярные это Lex для лексического анализа и yacc для парсинга. Причём в Linux они уже есть. Для Win32 они тоже, конечно, есть. Ну и второе: если вы вдруг захотите сделать конавт ручками, то нужно написать явно код, который будет моделировать работу этого автомата.