Задание:
Разработайте грамматику для моделирования работы компилятора согласно своему варианту. Для синтаксического анализа – КС-грамматику, для лексического анализа – регулярную грамматику. Постройте лексический анализатор, который решает следующие задачи: выделяет из текста входной программы все лексемы, входящие в заданную языковую конструкцию (согласно варианту), идентификаторы, константы; удаляет лишние пробелы и комментарии из входной строки. Постройте синтаксический анализатор на основе заданного варианта распознавателя. Дополнительные множества, необходимые для заполнения таблиц разбора, должны строиться автоматически. Таблицы разбора должны заполняться автоматически с использованием алгоритмов, предложенных в учебниках Гордеева, Молчанова. Результатом работы синтаксического анализатора должно быть дерево вывода, представленное в форме узлов и дуг, и соответствующее ему порождение рассматриваемой цепочки. При обнаружении ошибки на этапе синтаксического анализа должна вызываться программа восстановления после ошибки.Примечание:
Все конструкции должны предусматривать наличие следующих операторов: составного оператора, оператора присваивания, операторов сравнения, операторы ввода – вывода, разделителей операторов, арифметические и (или) логические операции. В тех вариантах, где это возможно, должны допускаться разные уровни вложенности. В задании I заданную грамматику представить в виде: правил КС-грамматики, в форме БНФ, на языке синтаксических диаграмм. Работа лексического анализатора должна моделироваться конечным автоматом, граф переходов которого должен быть представлен в пояснительной записке.
Назначение разработки.
Основным назначением разработки является демонстрация работы компилятора описание и работа с классами языка Си.
Ее целью служит закрепление навыков, полученных при изучении дисциплины «Теория языков программирования и методы трансляции».
Требования к программе.
4.1. Требования к функциональным характеристикам.
1) наличие удобного интерфейс;
2) возможность ввода данных с клавиатуры;
3) программа должна реализовывать:
1. лексический анализ входной строки;
2. синтаксический анализ входной строки;
3. наглядное представление результатов (результаты работы лексического и синтаксического анализатора);
4. обнаружение ошибок и вызов подпрограммы восстановления после ошибки.
4.2. Требования к надежности.
В программе должна быть реализована обработка некорректных действий пользователя, обнаружение ошибок и восстановление после ошибки.
Необходимо предусмотреть:
- блокировку некорректных действий пользователя при работе с программой; поиск и обработку ошибок в результате работы лексического и синтаксического анализаторов.
4.3. Условия эксплуатации.
Программа предназначена для работы на одном персональном компьютере одним пользователем, не требует наличия обслуживающего персонала.
Не требуется высокая квалификация пользователя.
4.4. Требования к составу и параметрам технических средств.
Для работы программы требуется IBM-совместимый персональный компьютер, ОС Windows 98/2000/XP/Vista/7/8, процессор Pentium, минимум 64 Мб ОП и минимум 10 Мб свободного места на жестком диске.
4.5. Требования к информационной и программной совместимости.
Программа будет разработана на языке Pascal в среде Borland Delphi 7 и должна работать под управлением операционной системы семейства Windows (Windows NT/ME/2000/2003/XP/Vista/7).
5. Требования к программной документации.
Программная документация должна содержать:
- блок-схемы алгоритмов; текст программы; руководство пользователя; расчетно-пояснительную записку.
Стадии и этапы разработки.
Этапы разработки | Срок исполнения | Исполнитель |
Постановка задачи и разработка технического задания | ||
Построение графа конечного автомата по лексическому анализатору. Написание программы лексического анализатора | ||
Программная реализация построения дополнительных множеств, таблицы разбора, алгоритма разбора, порождения правильной цепочки, дерева вывода. | ||
Доработка программного кода. Составление РПЗ | ||
Подготовка к защите |
Порядок контроля и приемки.
Этап контроля | Дата приемки | Подпись руководителя |
Готовое техническое задание в бумажном виде | ||
Граф конечного автомата по лексическому анализатору. Программа лексического анализатора | ||
Программная реализация построения дополнительных множеств, таблицы разбора, алгоритма разбора, порождения правильной цепочки, дерева вывода. | ||
Готовый программный код всей программы. РПЗ | ||
Защита |
ПРИЛОЖЕНИЕ 2
минобрнауки России
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«ЧЕРЕПОВЕЦКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Институт информационных технологий |
Кафедра математического и программного обеспечения ЭВМ |
Дисциплина: Теория языков программирования и методы трансляции |
Построение компилятора
Руководство пользователя
Листов 5
Руководитель | |
Исполнитель | |
студент группы | 1ИВТб-41 |
Оценка | |
Подпись |
2014 год
Общие сведения о программе
Разрабатываемая программа предназначена для моделирования работы компилятора и демонстрации работы входящих в его состав лексического и синтаксического анализаторов для описания и работы с классами языка Си.
Программа выполняет следующие функции:
- Лексический анализ входной строки; Синтаксический анализ входной строки; Построение дерева разбора;
Описание установки
Данная программа не требует установки.
Описание запуска
Для открытия программы необходимо запустить файл KR_TAP. exe, находящийся в рабочем каталоге программы. После запуска откроется главное окно программы (рис. П2.1):

Рис. П2.1. Главное окно программы
В начале работы необходимо ввести исходную строку для распознавания в поле “Данные для анализа”.
После этого нажатием на кнопку “Лексический анализ” производится лексический анализ входной строки. В результате будут заполнены таблицы таблицы лексем и поля код, псевдокод и дескрипторный код. При обнаружении ошибок будет выведена информация о позиции, в которой она произошла и символе, ее вызвавшем.

Рис. П2.2. Лексический анализ

Рис. П2.2.1. Лексический анализ
Далее можно нажать кнопку “Синтаксический анализ”. Откроется новое окно. Затем нажать на кнопку “Построить множества и матрицу предшествования”. Будут построены множества крайних левых и крайних правых символов (рис. П2.3), а также выведена матрица предшествования(рис. П2.4).

Рис. П2.3. Множества L и R

Рис. П2.4. Матрица предшествования
Нажимаем на кнопку “Разобрать”. Будет произведен синтаксический анализ входной строки, и будет выдано сообщение о том, допущена она или нет, а также появится окно “Строка вывода”. (рис. П2.5)

Рис. П2.5. Синтаксический анализ

Рис. П2.5.1. Синтаксический анализ
Теперь можно перейти на вкладку “Дерево разбора” (рис. П2.6).

Рис. П2.6. Вкладка «Дерево разбора»
ПРИЛОЖЕНИЕ 3
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, jpeg, ExtCtrls, XPMan;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button4: TButton;
StringGrid6: TStringGrid;
StringGrid5: TStringGrid;
StringGrid4: TStringGrid;
StringGrid3: TStringGrid;
StringGrid2: TStringGrid;
StringGrid1: TStringGrid;
StringGrid7: TStringGrid;
PageControl1: TPageControl;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


