- •2011Г. Содержание:
- •Спецификация Разработка:
- •Описание входных данных:
- •Описание выходных данных:
- •Примеры входных и выходных данных:
- •Проектирование
- •Проектирование модульной структуры
- •Пример набора тестов для модулей распознавания цепочки:
- •3. Кодирование
- •3.1. Блок транслитерации
- •Транслитерация символьной цепочки:
- •3.2 Лексический блок
- •If b then X(f1, f2, f3) else d(e1, e2);
- •Конечный распознаватель лексического блока:
- •Редукция конечного распознавателя лексического блока:
- •Примитивные процедуры обрабатывающего автомата
- •Процедуры переходов обрабатывающего автомата лексического блока
- •3.3 Синтаксический блок
- •Тестирование
- •Пример протокола тестирования головного модуля
Конечный распознаватель лексического блока:
|
Буква |
Цифра |
Пробел |
Запятая |
Скобка |
Тчкзпт |
НАЧ |
КЛСЛОВО1 |
Е |
НАЧ |
Е |
Е |
Е |
КЛСЛОВО1 |
КЛСЛОВО1 |
Е |
ПРОБЕЛ 1 |
Е |
Е |
Е |
ПРОБЕЛ 1 |
ИМЯ1 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ1 |
Е |
Е |
ПРОБЕЛ 2 |
Е |
Е |
Е |
ПРОБЕЛ 2 |
КЛСЛОВО2 |
Е |
Е |
Е |
Е |
Е |
КЛСЛОВО2 |
Е |
Е |
ПРОБЕЛ3 |
Е |
Е |
Е |
ПРОБЕЛ 3 |
ИМЯ2 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ2 |
Е |
Е |
ПРОБЕЛ 4 |
Е |
Е |
Е |
ПРОБЕЛ 4 |
Е |
Е |
Е |
Е |
СКОБКА |
Е |
СКОБКА1.1 |
ИМЯ2.1 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ2.1 |
Е |
Е |
Е |
ЗАПЯТАЯ |
Е |
Е |
ЗАПЯТАЯ |
ИМЯ2.2 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ2.2 |
Е |
Е |
Е |
ЗАПЯТАЯ |
Е |
Е |
ЗАПЯТАЯ |
ИМЯ2.3 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ2.3 |
Е |
Е |
Е |
Е |
СКОБКА |
Е |
СКОБКА1.2 |
Е |
Е |
ПРОБЕЛ 8 |
Е |
Е |
Е |
ПРОБЕЛ 5 |
КЛСЛОВО3 |
Е |
Е |
Е |
Е |
Е |
КЛСЛОВО 3 |
Е |
Е |
ПРОБЕЛ 9 |
Е |
Е |
Е |
ПРОБЕЛ 6 |
ИМЯ3 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ 3 |
Е |
Е |
ПРОБЕЛ 10 |
Е |
Е |
Е |
ПРОБЕЛ 7 |
Е |
Е |
Е |
Е |
СКОБКА |
Е |
СКОБКА 2.1 |
ИМЯ3.1 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ2.1 |
Е |
Е |
Е |
ЗАПЯТАЯ |
Е |
Е |
ЗАПЯТАЯ |
ИМЯ3.2 |
ИМЯ |
Е |
Е |
Е |
Е |
ИМЯ2.2 |
Е |
Е |
Е |
Е |
СКОБКА |
Е |
СКОБКА 2.2 |
Е |
Е |
Е |
Е |
Е |
ТЧКЗПТ |
ТЧКЗПТ |
Е |
Е |
Е |
Е |
Е |
Е |
Редукция конечного распознавателя лексического блока:
Шаг |
Результат( блоки состояний) |
Действия |
0 |
Р0={НАЧ, КЛСЛОВО, ПРОБЕЛ 1, ИМЯ, ПРОБЕЛ 2, КЛСЛОВО, ПРОБЕЛ 3, ИМЯ, ПРОБЕЛ 4, КЛСЛОВО, ПРОБЕЛ 5, ИМЯ ,ТЧКЗПТ} |
Разбиваем P0 на два блока: допустимые и отвергающие состояния |
1 |
{ НАЧ, КЛСЛОВО, ПРОБЕЛ 1, ИМЯ, ПРОБЕЛ 2, КЛСЛОВО, ПРОБЕЛ 3, ИМЯ, ПРОБЕЛ 4, КЛСЛОВО, ПРОБЕЛ 5, ИМЯ } {ТЧКЗПТ} |
Разбиваем по входу буква |
2 |
{НАЧ, КЛСЛОВО} {ПРОБЕЛ 1, ИМЯ} { ПРОБЕЛ 2, КЛСЛОВО } { ПРОБЕЛ 3, ИМЯ } { ПРОБЕЛ 4, КЛСЛОВО } { ПРОБЕЛ 5, ИМЯ } {ТЧКЗПТ} |
1. Разбиваем по входу цифра 2. Разбиваем по входу цифра 3. Разбиваем по входу двоеточие 4. Разбиваем по входу тчкзпт |
3 |
{НАЧ } { КЛСЛОВО } { ПРОБЕЛ 1 } { ИМЯ } { ПРОБЕЛ 2 } { КЛСЛОВО } { ПРОБЕЛ 3} { ИМЯ } { ПРОБЕЛ 4 } { КЛСЛОВО } { ПРОБЕЛ 5 } { ИМЯ } {ТЧКЗПТ}
|
Разбиваем по входу тчкзпт |
Примитивные процедуры обрабатывающего автомата
№ п |
Процедура |
Семантика | |
0 |
Да |
Остановить обработку и допустить цепочку | |
1 |
Нет |
Остановить обработку и отвергнуть цепочку | |
2 |
Обработать |
Добавить входной символ к значению текущей лексемы | |
3 |
Лексема (класс) |
Увеличить счетчик лексем на 1, установить заданный класс текущей лексемы |