МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Лабораторная работа №6
по дисциплине «Системное программное обеспечение»
на тему: «Синтаксис языков программирования. Восходящий синтаксический анализ, автоматная реализация»
Вариант № 4141243
Выполнил:
студент группы АМ-610
Ретунский А.Л.
Проверил:
Малявко А.А.
Новосибирск 2009 г.
Содержание
Цель работы.. 3
Задание. 4
Вариант задания. 5
Ход работы.. 6
Выводы.. 13
Изучение основных идей и понятий восходящего синтаксического анализа, свойств формальных грамматик, определяющих принадлежность грамматики к одному из классов LR, получение навыков построения автоматной реализации восходящего анализатора, исследование поведения восходящих синтаксических акцепторов.
1. Используя пакет ВебТрансЛаб:
- построить табличную реализацию (шаблон …SyntAsTxLR…), разобраться в структуре управляющей таблицы автомата, уяснить способы формирования и использования всех полей;
- построить процедурную реализацию (шаблон …SyntAsPxLR…), сравнить тексты построенных программных модулей, уяснить способы формирования операций восходящего синтаксического акцептора;
- изучить структуру таблицы канонических и таблицы обобщенных конфигураций, связь этих таблиц с управляющей таблицей восходящего синтаксического акцептора;
- выявить разрешенные преобразователем конфликты типов «сдвиг–свертка» и «свертка–свертка», разрешенные и, возможно, не разрешенные преобразователем, уяснить на этих примерах основы LR-классификации грамматик;
2. Выполнить трассировку процессов восходящего синтаксического
акцепта, изучить поведение всех построенных синтаксических акцепторов при разборе как правильных предложений, так и предложений с намеренно внесенными синтаксическими ошибками.
3. Проанализировать и сравнить между собой все полученные тексты программ и результаты выполнения пункта 2. Оценить степень пригодности изученных вариантов реализации восходящих синтаксических акцепторов для выполнения курсовой работы.
4. Изучить те элементы языка шаблонов, которые используются для преобразования внутреннего (формируемого преобразователем) представления конечного автомата со стековой памятью в программную реализацию восходящего синтаксического акцептора.
II.1 Идентификаторы и константы
Вариант: |
4 |
Идентификаторы |
<Б><Ц><пБЦ> |
Константы |
целые вещественные символьные 7-ричные L_T/ L_F |
II.2 Объявления примитивных типов (целое, вещественное, символьное, булево):
Вариант: |
1 |
int[e[g[e[r]]]] float char bool |
II.3 Объявления объектов и создание/уничтожение экземпляров
Вариант: |
4 |
Классов |
define |
Экземпляров |
get / drop |
II.4 Оператор присваивания:
Вариант: |
1 |
<И> := <В>; |
II.5 Условный оператор:
В-т: |
2 |
when <ЛВ> then <ОБ> [else <ОБ>] |
II.6 Переключатель
В-т: |
4 |
with <В> {?<К>:<ОБ> …} |
II.7 Оператор цикла:
В-т: |
3 |
for<И>from<К>to<К> [step <К>] <ОБ> |
1-2. Используя пакет ВебТрансЛаб:
- построил табличную реализацию (шаблон …SyntAsTxLR…), разобрался в структуре управляющей таблицы автомата, уяснил способы формирования и использования всех полей (таблица не приводится, из-за большого объема).
Смысл операций:
1. Сдвиг ( Shift ) Sn:
1.1.1. чтение следующего входного символа;
1.1.2. занесение номера состояния n в стек состояний;
1.1.3. переключение автомата в состояние n.
1.2. Переход ( Go ) Gn:
1.2.1. занесение номера состояния n в стек состояний;
1.2.2. переключение автомата в состояние n.
2. Свертка ( Reduce ) Rk,m:
2.1. Со стека состояний сбрасывается k номеров состояний;
2.2. Текущим устанавливается состояние, номер которого оказался на верхушке стека;
2.3. В качестве текущей колонки УТ устанавливается колонка m.
3. Операция Stop.
4. Операция останова по ошибке.
Выполнил трассировку процессов восходящего синтаксического акцепта, при разборе как правильных предложений, так и предложений с намеренно внесенными синтаксическими ошибками.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.