- •Глава 1
- •1.1. Понятие абстрактного автомата
- •1.2. Преобразование абстрактных автоматов
- •1.3. Соединение (композиция) автоматов
- •1.4. Тестирование абстрактных автоматов
- •2. Начальные языки описания абстрактных автоматов
- •2.1. Язык Граф-Схем Алгоритмов
- •2.2. Язык регулярных выражений
- •2.3. Формальные грамматики и языки
- •2.4. Автоматы и грамматики [ 7 ]
- •2.5. Машина тьюринга [ 5, 8 ]
- •3. Структурный синтез автоматов и кодирование информации
- •3. 3. ПредставЛение символьной информации
- •4.1 Машинное изображение чисел
- •4.2. Выполнение арифметических и логических операций
- •4.3. Микропрограммирование
- •5 Математический аппарат синтеза комбинационных автоматов
- •5.1 Элементная база построения комбинационных автоматов
- •5.2. Переключательные функции (логика высказываний)
- •7. Структурный синтез автоматов с памятью, асинхронные автоматы и сети петри
- •7.1. Канонический метод синтеза автоматов с памятью
- •7.3 Моделирование дискретных асинхронных процессов и сети Петри
- •Свойства сетей Петри
2.4. Автоматы и грамматики [ 7 ]
Автомат распознаёт цепочку над V , если, находясь в начальном состоянии, автомат получает на вход цепочку последовательно символ за символом, и после завершения цепочки оказывается в выделенном состоянии w0 . Для построения автомата, распознающего язык, порождаемый А-грамматикой G, необходимо каждому вспомогательному символу wW поставить в соответствие состояние автомата, в качестве множества терминальных символов взять множество входных символов автомата, каждому правилу w::vw1 поставить в соответствие переход между состояниями w и w1 под воздействием входного символа v. Начальному состоянию автомата соответствует w1 ,а выделенному состоянию w0 .
В рассматриваемом примере построим граф автомата (Рис. 12).
Рис.12
Для “вычисления” смысла цепочки можно ввести выходные символы автомата, вызывающие соответствующие семантические программы.
В рассматриваемом примере это :
У1) S:=d
У2) S:=2*S=d
У3) M:=1
У4) M:=M/2; S:=S+d*M
У5) выдача числа S
У6) сообщение о синтаксической ошибке
Структура
автомата, который можно назвать
интерпретирующим, приведена на Рис. 13.
Рис. 13
Правила А-грамматики можно записать в виде:
wi ::vj wk (jJi, kKij, iI),
причём wk WU{ w0 }, где w0 – пустой символ.
Если существует | Kij |>1, то автомат, построенный по грамматике G с помощью изложенной выше процедуры, будет недетерминированным.
Например, системе правил
w1 :: v1 w2 | v2 w3
w2 :: v2 | v2 w2
w3 :: v3 | v3 w3
соответствует недетерминированный автомат, граф которого показан на рис. 14.
Рис.14
Для построения детерминированного автомата преобразуем недетерминированный автомат путём введения новых состояний и правил на основе следующих соотношений
w1 :: = vj { wk | kK1j };
{wi | iM} :: = vj { wk | k Kij ,iM} (iUJi ),
где множество вида { wt | tT} соответствует новым состояниям.
В рассматриваемом примере получим
J1 = {1} , J2 = {2}, J3 ={3};
K11 ={2,3}, K22 ={0,2}, K33 = {0,3};
w1 ::=v1 {w2 , w3 }
{w2 , w3 } ::=v2 {w0 , w2 } | v3 {w0 , w3 };
{w0 , w2 } ::=v2 {w0 , w2 };
{w0 , w3 } ::=v3 {w0 , w3 }.
Граф переходов детерминированного автомата показан на Рис. 15
Рис.15
Выделенными состояниями являются {w0 , w2 } и {w0 , w3 }.
Завершение работы автомата в этих состояниях означает распознование цепочки языка.
В заключении приведён пример бесконтекстной грамматики, не являющейся автоматной. Эта грамматика, распознающая правильные скобочные выражения, имеет правила
w1::={w2 , w3 }; w2 ::=(w2) | w0 ; w3 ::=w2 | w0 ,
где w1 – начальный символ
w0 - пустой символ
( , ) - терминальные символы.
Грамматика реализуется автоматом с бесконечной памятью, имеющим граф переходов, изображённый на рис.16.
Рис. 16
Состояние является одновременно и начальным и выделенным заключительным состоянием. Распознавание цепочки ( ( ( ( ( ( ( (
1 2 3 4 5 6 7 8
показано на рис. 17
Рис. 17
