Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2012, 22:24   #1
RocBoy-D
Пользователь
 
Регистрация: 10.03.2012
Сообщений: 10
По умолчанию Конечный автомат. Регулярная грамматика

Здравствуйте! Возникли проблемы с задачей: дан набор правил q0 -> aq1, q1 -> bq2, q1 -> q2, q1 -> cq2, q2 -> aq3 и др. Нужно написать программу, которая считывает количество символов в слове и выводит на экран все слова, которые удовлетворяют этим правилам. Подскажите, что нужно искать в Интернете или дайте ссылки, алгоритм или код, если кто-то решал похожую задачу. Спасибо
RocBoy-D вне форума Ответить с цитированием
Старый 26.10.2012, 23:03   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Ну, универсальный талмуд на сей счёт - Ахо, Лам, Сети, Ульман: "Компиляторы".

Если известно, что правила описывают детерминированный автомат (т.е. правила имеют вид N1 -> tN2 либо N1 -> t, причём не существует пары с совпадающим t N1 -> tN2, N1 -> tN3), то можно построить просто по функции на нетерминал. Каждая такая функция читает один символ; если он не совпадает ни с одним из правил - сообщает об ошибке, иначе вызывает функцию, соответствующую нетерминалу из правой части правила. Если правила описывают недетерминированный автомат (то есть содержащий также описанные выше пары и/или правила вида N1 -> N2), то его можно привести к детерминированному ("Компиляторы" 3.7.1).

Можно вместо этого сворачивать выражение в дерево разбора (синтаксический анализ; "Компиляторы" 2.4.4) - это в каком-то смысле более общий метод, но он и заметно сложнее.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
недетерминированный конечный автомат CodeNOT Общие вопросы C/C++ 0 21.02.2012 15:48
Конечный автомат maxon56 Помощь студентам 0 19.12.2011 19:32
Конечный автомат для строк Infinite Помощь студентам 0 25.12.2009 21:08
Я сделал конечный автомат (правильно?) Arkuz Общие вопросы Delphi 2 11.10.2008 15:59
Конечный автомат на Delphi Arkuz Общие вопросы Delphi 4 02.10.2008 23:50