Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ лекции.docx
Скачиваний:
10
Добавлен:
24.11.2019
Размер:
688.23 Кб
Скачать

Примеры разбора цепочек по алгоритму 1:1 ограниченного контекстного преобразователя

Пример №1. Задана цепочка: #a0011#.

Шаг№1.

а) Считываем символ цепочки в переменную R:

R=#.

б) Увеличиваем переменную i на единицу:

i=1.

в) Проверяем совпадение с таблицей - совпадений нет.

г) Переносим символ из переменной R в стек STK:

STK=#.

Шаг№2.

а) Считываем символ цепочки в переменную R:

R=a.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а.

Шаг№3.

а) Считываем символ цепочки в переменную R:

R=0.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а0.

Шаг№4.

а) Считываем символ цепочки в переменную R:

R=0.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а00.

Шаг№5.

а) Считываем символ цепочки в переменную R:

R=1.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а001.

Шаг№6.

а) Считываем символ цепочки в переменную R:

R=1.

б) Проверяем совпадение с таблицей - совпадение есть.

в) Производим замену верхней части стека по правилам:

STK=#а0W.

г) Проверяем совпадение с таблицей - совпадений нет.

д) Переносим символ из переменной R в стек STK:

STK=#а0W1.

Шаг№7.

а) Считываем символ цепочки в переменную R:

R=#.

б) Увеличиваем переменную i на единицу:

i=2.

в) Проверяем совпадение с таблицей - совпадение есть.

г) Производим замену верхней части стека по правилам:

STK=#аW.

д) Проверяем совпадение с таблицей – совпадения есть.

е) Производим замену верхней части стека по правилам:

STK=#Z.

ж) Проверяем совпадение с таблицей – совпадений нет.

з) Переносим символ из переменной R в стек STK:

STK=#Z#.

и) Так как i=2 и в стеке содержится #Z#, то делаем вывод, что

цепочка построена по правилам.

Пример №2. Задана цепочка: #a001#

Шаг№1.

а) Считываем символ цепочки в переменную R:

R=#.

б) Увеличиваем переменную i на единицу:

i=1.

в) Проверяем совпадение с таблицей - совпадений нет.

г) Переносим символ из переменной R в стек STK:

STK=#.

Шаг№2.

а) Считываем символ цепочки в переменную R:

R=a.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а.

Шаг№3.

а) Считываем символ цепочки в переменную R:

R=0.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а0.

Шаг№4.

а) Считываем символ цепочки в переменную R:

R=0.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а00.

Шаг№5.

а) Считываем символ цепочки в переменную R:

R=1.

б) Проверяем совпадение с таблицей - совпадений нет.

в) Переносим символ из переменной R в стек STK:

STK=#а001.

Шаг№6.

а) Считываем символ цепочки в переменную R:

R=#.

б) Увеличиваем переменную i на единицу:

i=2.

в) Проверяем совпадение с таблицей – совпадений нет.

г) Переносим символ из переменной R в стек STK:

STK=#а001#.

д) Так как i=2 и в стеке не содержится #Z#, то делаем вывод, что

цепочка построена неверно.