Курс Основы построения трансляторов


Задания к контрольной работе №2


Используя  заданный синтаксис построить формальные грамматики, для них разработать представление управляющих данных и привести пример разбора по заданному алгоритму:

- Алгоритм рекурсивного спуска. Разработать грамматику. Написать функции разбора правил, аналогично приведенным в sindown1.cpp. Привести пример дерева разбора.

-   Нисходящий разбор с использованием LL(1) грамматики. Разработать грамматику. Создать таблицу выбирающих символов и таблицу действий МА. Привести пример дерева разбора. По возможности проверить грамматику на программной заготовке lgram1.cpp;

-   Восходящий метод "свертки-переноса". Разработать грамматику. Создать таблицу действий МА. Привести пример дерева разбора. . По возможности проверить грамматику на программной заготовке lowtohigh.cpp.

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

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

Логические операции &&, ||, !;

Операции [], () – вызов функции;

Операции над указателями *,&;

Операции ++,--;

Операции сравнения ==, !=,<, >, <=, >=;

Операция присваивания =;

Операция “запятая”;

Поразрядные операции &, |, ~, ^;

Операции над структурой (“стрелочка” и “точка”);

Преобразование “выражение – оператор”  (символ “;”);

Блок (последовательность операторов, заключенная в {} );

Оператор while;

Оператор do – while;

Оператор for;

Оператор if (с else и без него);

Оператор if с синтаксисом if-else-endif  (Бейсик);

Оператор do-loop (Бейсик);

Определение простых переменных и массивов типов int, double;

Заголовок функции с результатом и параметрами типов int, double;

Определение простых переменных и кратных указателей вида int ***p.

 

7. Список литературы

1. Ф.Льюис, Д. Розенкранц, Р.Стирнз. Теоретические основы проектирования компиляторов. М., Мир, 1979.

2. Р Хантер. Проектирование и конструирование компиляторов. М., Мир.

3. Т.Пратт. Языки программирования. Разработка и реализация. М., Мир, 1979.

4. Л.Бек. Введение в системное программирование. М.,Мир, 1988.

5. Язык Си для профессионалов. И.В.К.Софт. М.: 1991.

 

 

2. Лексический анализ




Начало  Назад  Вперед



Книжный магазин