Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа №1.



Автоматная реализация алгоритма разбора.

 

Требования к реализации:

Требуется реализовать автомат указанного типа для разбора и преобразования циклов, написанных на языке, соответствующих требованию варианта задания. Вариант задания также содержит типы входного и выходного циклов. Достаточно обрабатывать один цикл в случае множественных или вложенных циклов во входных данных.

 

Порядок выполнения работы:

1. Постановка задачи

2. Составление таблиц переходов, выходов, и/или графа автомата

3. Разработка алгоритма работы реализуемого автомата.

4. Программная реализация автомата

5. Написание отчета

 

Требования к отчету:

· Постановка задачи

· Текстовое описание реализованного автомата разбора

· Таблица переходов и таблица выходов (для автомата Мили), или граф с указанными переходами и выходами

· Таблица обозначений входных символов

· Таблица обозначений функций выходов

· Контрольный пример

· Результат обработки контрольного примера

Варианты заданий:

Входной язык Входной цикл Выходной цикл Модель автомата
C/C++ for while (…) do {…} Мили
Pascal for while Мили
C/C++ for label/goto Мили
Pascal for label/goto Мили
C/C++ while (…) do {…} label/goto Мура
Pascal while label/goto Мура
C/C++ do {…} while (…) while (…) do {…} Мура
Pascal while repeat Мура
C/C++ while (…) do {…} do {…} while (…) Мили
Pascal repeat while Мили
C/C++ for do {…} while (…) Мили
Pascal for repeat Мили
13* C/C++ while (…) do {} for Мура
14* Pascal while for Мура
C/C++ for while (…) do {…} Мура
Pascal for while Мура
C/C++ for label/goto Мура
Pascal for label/goto Мура
C/C++ while (…) do {…} label/goto Мили
Pascal while label/goto Мили
C/C++ do {…} while (…) while (…) do {…} Мили
Pascal while repeat Мили
C/C++ while (…) do {…} do {…} while (…) Мура
Pascal repeat while Мура
C/C++ for do {…} while (…) Мура
Pascal for repeat Мура
27* C/C++ while (…) do {} for Мили
28* Pascal while for Мили

* В этих вариантах требуется преобразовать циклы иных типов в цикл for. Объявление такого цикла не содержит всех данных, достаточных для такого преобразования. Поэтому дополнительным условием является содержащаяся перед циклом строка инициализации счётчика и выделенная строка изменения счётчика в самом цикле. Перед строкой инициализации счётчика ставится комментарий:

C/C++: //Init

Паскаль: {Init}

Перед строкой изменения счётчика выставляется комментарий:

C/C++: //Upd

Паскаль: {Upd}

Пример реализации:

Visual Basic. Преобразование цикла FOR... NEXT в DO…LOOP



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.