Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otchet.docx
Скачиваний:
21
Добавлен:
23.03.2015
Размер:
55.12 Кб
Скачать

3. Кодирование

3.1. Блок транслитерации

Блок транслитерации реализован в виде детерминированного конечного автомата ,который выполняет обработку и распознавание входной символьной цепочки. Обработка входной цепочки заключается в собственно выполнении транслитерации – формировании цепочки лексем вида ("символ цепочки", "класс символа цепочки"). Распознавание входной цепочки означает, что данный автомат должен отвергать все символьные цепочки, содержащие символы, которые заведомо не удовлетворяют формулам Бэкуса–Наура из условия задачи (например, буквы кириллицы, символы @, # и др.).

Транслитерация символьной цепочки:

Символ

Класс

a..z, A..Z

0..9

,

;

(

)

Буква

Цифра

Запятая

Тчкзпт

Пробел

Откр. скобка

Закр. скобка

другие

ошибка

3.2 Лексический блок

Лексический блок реализован в виде детерминированного конечного автомата, который выполняет обработку и распознавание входной цепочки лексем (полученной как результат работы блока транслитерации). Обработка входной цепочки заключается в формировании цепочки лексем вида ("символ входного языка", "класс символа входного языка"). Распознавание входной цепочки означает, что данный автомат должен отвергать все цепочки лексем, содержащие лексемы, которые заведомо не удовлетворяют

формулам Бэкуса–Наура из условия задачи (например, два знака числа подряд, знак числа после десятичной точки и др.).

Построение конечного автомата лексического блока необходимо выполнить следующим образом. Сначала, используя метод разметки символов, нужно построить конечный распознаватель входной цепочки лексем: определить список состояний (название/номер и семантика состояния), выделить в данном списке начальное состояние и допускающие состояния и указать функцию переходов.

If b then X(f1, f2, f3) else d(e1, e2);

п/п

Состояние

Семантика

1

НАЧ

Момент до начала обработки цепочки либо чтение пробелов в начале строки

2

КЛСЛОВО1

Чтение ключевого слова if

3

ПРОБЕЛ 1

Чтение пробелов, находящихся между ключевым словом if и именем

4

ИМЯ1

Чтение имени

5

ПРОБЕЛ 2

Чтение пробелов, находящихся между именем и ключевым словом

6

КЛСЛОВО2

Чтение ключевого слова then

7

ПРОБЕЛ 3

Чтение пробелов, находящихся между ключевым словом then и именем

8

ИМЯ2

Чтение имени

9

ПРОБЕЛ 4

Чтение пробелов, находящихся между именем и скобкой

10

СКОБКА1.1

Чтение скобки открывающей список параметров

11

ИМЯ2.1

Чтение имени 1 параметра

12

ЗАПЯТАЯ

Чтение запятой

13

ИМЯ2.2

Чтение имени 2 параметра

14

ЗАПЯТАЯ

Чтение запятой

15

ИМЯ2.3

Чтение имени 3 параметра

16

СКОБКА1.2

Чтение скобки закрывающей список параметров

17

ПРОБЕЛ 5

Чтение пробелов между скобкой и ключевым словом

18

КЛСЛОВО 3

Чтение ключевого слова else

19

ПРОБЕЛ 6

Чтение пробелов, находящихся между ключевым словом и именем

20

ИМЯ 3

Чтение имени

21

ПРОБЕЛ 7

Чтение пробелов, находящихся между именем и скобкой

22

СКОБКА 2.1

Чтение скобки открывающей список параметров

23

ИМЯ2.1

Чтение имени 1 параметра

24

ЗАПЯТАЯ

Чтение запятой

25

ИМЯ2.2

Чтение имени 2 параметра

26

СКОБКА 2.2

Чтение скобки открывающей список параметров

27

ТЧКЗПТ

Чтение точки с запятой

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