Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
15_Лексический анализ.doc
Скачиваний:
6
Добавлен:
27.09.2019
Размер:
200.7 Кб
Скачать

Программная реализация конечных автоматов

Представление входных символов.

  • символы входного алфавита представляются в виде ASCII кодов;

  • ASCII-символы перед поступлением в конечный автомат обрабатываются подпрограммой-кодировщиком, например:

I  0

N  1

C  2

P  3

U  4

T  5

O  6

┤  7 и.т.д.

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

  • номер текущего состояния запоминается в специальной переменной (явный способ).

  • для каждого состояния – своя часть программы (неявный способ). Переключение между состояниями производится командами условного и безусловного переходов.

Выбор переходов.

В случае, когда номер состояния запоминается явно, определенную сложность вызывает реализация переходов между состояниями.

  • Метод вектора переходов. В памяти создается таблица переходов, элементы которой содержат адреса меток программы соответствующих состояний. Например, для строки N из примера 3 строка таблицы переходов будет иметь вид:

N

№ сост.Е

№ сост.Е

№ сост.С

№ сост.Р

№ сост.Е

№ сост.Е

№ сост.Е

№ сост.Е

адрес

обработ-чика ошибки

адрес

обработ-чика ошибки

адрес

метки сост-ния

C

адрес

метки сост-ния

P

адрес

обработ-чика ошибки

адрес

обработ-чика ошибки

адрес

обработ-чика ошибки

адрес

обработ-чика ошибки

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

  • Метод списка переходов. Для каждого состояния создается список вида:

Входной символ

Адрес метки программы

С

адрес метки состояния С

P

адрес метки состояния P

<символ не найден>

адрес обработчика ошибки

Входной символ ищется в списке. Если он найден, то происходт переход по соответствующему адресу, если не найден – то на общий адрес обработчика ошибки. Метод работает медленнее, но расходует меньше памяти, чем метод вектора переходов.

1 По принципу конечных автоматов строятся также блоки проверки правописания в текстовых редакторах (например, Word).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]