Задание:

Разработайте грамматику для моделирования работы компилятора согласно своему варианту. Для синтаксического анализа – КС-грамматику, для лексического анализа – регулярную грамматику. Постройте лексический анализатор, который  решает следующие задачи: выделяет из текста входной программы все лексемы, входящие в заданную языковую конструкцию (согласно варианту), идентификаторы,  константы; удаляет лишние пробелы и комментарии из входной строки. Постройте синтаксический анализатор на основе  заданного варианта распознавателя. Дополнительные множества, необходимые для заполнения таблиц разбора, должны строиться автоматически. Таблицы разбора должны заполняться автоматически с использованием алгоритмов, предложенных в учебниках Гордеева, Молчанова.  Результатом работы синтаксического анализатора должно быть дерево вывода, представленное в форме узлов и дуг, и соответствующее ему порождение рассматриваемой цепочки. При обнаружении ошибки на этапе синтаксического анализа  должна вызываться программа восстановления после ошибки.

Примечание:


Все конструкции должны предусматривать наличие следующих операторов: составного оператора, оператора присваивания, операторов сравнения, операторы ввода – вывода, разделителей операторов,  арифметические и (или) логические операции. В тех вариантах, где это возможно, должны допускаться разные уровни вложенности. В задании 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