Материал: ТА Лаб3

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторная работа №3

Программирование автомата “Транслятор”

Запрограммировать автомат в соответствии с данным описанием.

Требования к программе.

1.Программа должна быть написана на С++ Builder. 2. Должен быть введёна иерархия классов:

tr = "translator.txt"; opd = "operand.txt"; tm = "term.txt";

ex = "expression.txt"; opr = "operator.txt"; st = "stack.txt";

3. Рекомендуется в качестве main.cpp использовать прилагаемую программу. 4.Разработанная программа должна быть протестирована сравнением с прилагаемой

программой Translator.exe.

Автомат «Транслятор» (верхний уровень)

Таблица переходов автомата «Транслятор»:

 

z0

z1

z2

Не спец. симв.

0

0

-

;

1

-

-

#

-

2

-

Действия по состояниям:

z0: подаём поступивший на вход символ автомату «Оператор»;

z1: подаём поступивший на вход символ автомату «Оператор», сброс в 0 автомата«Оператор»;

z2: печать результата.

Автомат «Оператор»

Таблица переходов автомата «Оператор»:

 

z0

z1

z2

z3

z4

z5

буква

1

1

3

3

-

-

цифра

5

1

3

3

-

-

(

5

5

3

3

-

-

)

5

5

5

3

-

-

=

5

2

5

5

-

-

;

5

5

5

4

-

-

+ - * / . 5

5

5

3

-

-

запр.

5

5

5

5

-

-

Граф переходов автомата «Оператор»

Действия по состояниям: z0: начальное состояние

z1: добавляем символ, поступивший на вход, в к имени переменной z2: вталкиваем символ ‘=’ поступивший на вход в стек

z3: передаем поступивший на вход символ в автомат «Стек1» ( символы после ‘=’ ) z4: финальное состояние считывания новой переменной, заносим её имя в словарь z5: состояние ошибки

Автоматы «Стек1» и «Стек2»

Таблица переходов автомата «Стек»:

Стек1

Стек2

z0

z1

z2

другие

другие

1

1

1

) ;

( =

2

2

2

Действия по состояниям «Стек1»: z0: сброс

z1: добавляем символ, поступивший на вход, в «Стек1» z2: переписываем «Стек1» в автомат «Стек2»

Действия по состояниям «Стек2»: z0: сброс

z1: добавляем символ, поступивший на вход, в «Стек2»

z2: переписываем «Стек2» в автомат «Выражение», затем результат работы автомата «Выражение», преобразуем в строку и посимвольно подаем на вход «Стек1»

Автомат «Выражение»

Семантическая диаграмма:

Таблица переходов автомата «Выражение»:

 

z0

z1

z2

z3

z4

z5

б/ц

1

1

1

1

4

5

+

5

2

5

5

4

5

-

5

3

5

5

4

5

*,/,.

5

1

5

5

4

5

;

5

4

5

5

4

5

запр.

5

5

5

5

5

5

Граф переходов автомата «Выражение»:

Действия по состояниям: z0: сброс

z1: передаем поступивший на вход символ автомату "Терм" z2: терм считан, на вход поступил символ '+'

z3: терм считан, на вход поступил символ '-' z4: финальное состояние

z5: состояние ошибки

Автомат «Терм»

Семантическая диаграмма:

Таблица переходов автомата «Терм»:

 

 

z0

z1

z2

z3

z4

z5

б/ц

1

1

1

1

4

5

*

5

2

5

5

4

5

/

5

3

5

5

4

5

.

5

1

5

5

4

5

;

5

4

5

5

4

5

запр.

5

5

5

5

5

5

Граф переходов автомата «Терм»

Действия по состояниям: z0: сброс

z1: передаем поступивший на вход символ автомату "Операнд" z2: операнд считан, на вход поступил символ '*'

z3: операнд считан, на вход поступил символ '\' z4: финальное состояние

z5: состояние ошибки

Источник: https://studfile.net/preview/16493034/