Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методы трансляции.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.99 Mб
Скачать

Методика построения конечного автомата:

  1. изобразить начальное состояние автомата в виде поименованного узла диаграммы с входящей дугой.

  2. просмотреть очередной элемент регулярного выражения и построить соответствующую часть диаграммы:

а) путь для строки символов алфавита :

путь для той же строки, но под знаком итерации - , то есть цикл длины :

б) дуга для альтернативных символов алфавита

дуга для той же конструкции, но под знаком итерации - , то есть цикл длины 1:

в) для альтернативных строк - путей, исходящих из одного узла и завершающихся общим узлом :

для той же конструкции под знаком итерации - также путей, но при , то есть циклов длины соответственно.

г) для альтернативных итераций строк

- путей, исходящих из одного узла, в каждом из которых имеется цикл длины соответственно:

а для итераций строк, то есть для конструкции вида

, - такая же диаграмма, дополненная дугами от к , от к , от к и т.д.

  1. определить множество состояний как совокупность имен всех узлов диаграммы.

  2. определить множество заключительных состояний как совокупность имен узлов, из которых либо ни одна дуга не выходит, либо исходящая дуга начинает необязательно реализуемую часть диаграммы. Эквивалентные заключительные состояния объединить.

  3. по окончании просмотра всех элементов регулярного выражения определить КА формально и выполнить его проверку.

Пункт 2. Построение регулярной грамматики по КА.

Регулярную грамматику можно построить по конечному автомату следующим образом.

  1. принять имя начального состояния КА в качестве начального символа (аксиомы) грамматики. Имена состояний автомата принять в качестве нетерминалов , а входные символы - в качестве терминалов грамматики.

  2. переписать функции переходов КА вида

в форме порождающих правил грамматики

  1. пополнить множество полученных правил правилами вида

для функций переходов

Если (начальное состояние является также заключительным), добавить для аксиомы грамматики -правило .

  1. исключить из полученного множества правил грамматики бесполезные правила вида , где и - бесполезный нетерминал (не порождает строки терминалов).

  2. при наличии в грамматике одновременно правил вида и , где - аксиома и , преобразовать грамматику в целях исключения из правой части.

Пункт 3. Построение КА по регулярной грамматике.

Обычно при разработке языка его описывают порождающими правилами, то есть создают генератор языка. Для проверки правильности предложений языка конструируют распознаватель. Регулярной грамматике соответствует простейший распознаватель – конечный автомат.

Преобразование регулярной грамматики в КА можно выполнить, используя следующую методику.

  1. Пополнить грамматику правилом , где и - новый (бесполезный) нетерминал, для каждого правила вида , если в грамматике нет соответствующего ему правила , где .

  2. Начальный символ (аксиому) грамматики принять в качестве начального состояния КА. Из нетерминалов образовать множество состояний автомата, а из терминалов – множество символов входного алфавита.

  3. Каждое правило преобразовать в функцию переходов .

  4. Сформировать множество заключительных состояний как множество из правил , для которых имеются соответствующие правила .

  5. Если в грамматике имеется правило , где - аксиома грамматики, поместить в множество заключительных состояний.

  6. Если получен недетерминированный конечный автомат, преобразовать его в детерминированный.