Конструирование транслятора для модельного языка
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
4
5.2.2 Этап синтаксического анализа
На данном этапе выходными данными являются сообщение об ошибке и сообщение об отсутствии синтаксических ошибок в программе (таблица 9).
Таблица 9- Возможные сообщения на этапе синтаксического анализа
Сообщения об ошибкенет begin в строкенет End в строке нет Integer в строке нет := в строке нет ; или , в строке нет ( в строке нет ) в строке нет WHILE в строке нет DO в строке нет ENDWHILE в строке нет = | = в строкенет ; в строкенет идентификатора в строке Сообщение о выполнении синтаксического анализаУспешно выполнен анализ
5.2.3 Этап семантического анализа
На этапе семантического анализа возможны сообщения об ошибке (таблица 10).
Таблица 10 -Сообщения об ошибке на этапе семантического анализа
Сообщения об ошибкеДанный идентификатор уже объявленНеобъявленный идентификатор
6. Установка и эксплуатация программного средства
Cистемные требования (минимум)
1.1.5 Мб свободного пространства на жестком диске
2.128 Мб оперативной памяти
.1.8 ГГц частота ядра процессора
Установка: для установки поместите папку Анализ в удобное для вас место на жестком диске. Эта папка содержит файлы:
1.Project1.exe
2.Unit1.pas
3.Project1.dpr
4.Project1.res
5.Project1.dof
6.Project1.cfg
7.Unit1.dfm
8.Unit1.ddp
9.Unit1.dcu
10.Unit1.C++ Builder Form
11.Lex.txt
12.Id.txt
13.Num.txt
14.Kod.txt
.Огран.txt
.Слова1.txt
Папку sin содержащую файлы:
.Project1.exe
2.Unit1.pas
3.Project1.dpr
4.Project1.res
5.Project1.dof
6.Project1.cfg
7.Unit1.dfm
8.Unit1.ddp
9.Unit1.dcu
10.Unit1.C++ Builder Form
7. Работа с программным средством
Для работы с данным программным средством необходимо выполнить следующие действия:
1.Откройте папку с именем Программа.
2.Откройте приложение. Нажмите кнопки Вывести служ. слова: для вывода служебных слов для вывода ограничителей.
3.Кликнув по кнопке в окне приложения появиться код транслируемой программы по умолчанию .
4.Далее кликнув по кнопке , осуществиться лексический анализ программы. Если анализ прошел успешно, то в окне приложения, расположенного над кнопкой появиться таблица составленная из лексем.
.Кликнув по кнопке появится второе окно приложения в котором будет произведен синтаксический анализ кода транслируемой программы.
6.Если анализ прошел успешно то в окне приложения появится сообщение об успешном выполнении синтаксического анализа:
7.иначе выдастся сообщение об ошибке. Например:
Заключение
Мы создали лексический, синтаксический и семантический анализы с заданного подмножества языка программирования TURBO PASCAL с незначительными модификациями и изменениями. Также изучили составные части, основные принципы построения и функционирования компиляторов. Разработали РБНФ, БНФ и диаграммы Вирта для данной грамматики.
Для разработки лексический анализатор мы использовали таблицы ограничителей, служебных слов и код транслируемой программы. Выходными данными являются таблицы лексем, идентификаторов и чисел. Которые являются входными данными синтаксического и семантического анализатора.
Также мы изучили различные виды синтаксического анализа такие как цепочка вывода, дерево разбора и метод рекурсивного спуска. Который мы использовали для написания синтаксического анализа.
Данный проект позволит разобраться студентам с методами анализа программы и на практике проверить знания, полученные при изучении предмета Системное программное обеспечение. Также является основой для дальнейшей разработки учебного комплекса.
Список использованных источников
1.Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструменты.: Пер. с англ. - М.: Изд. дом Вильямс, 2001. - 768с.
2.Опалева Э. А., Самойленко В. П. Языки программирования и методы трансляции. - СПб.: БХВ-Петербург, 2005. - 480 с.: ил.
.Ишакова Е. Н. Разработка компиляторов: Методические указания к курсовой работе. - Оренбург: ГОУ ОГУ, 2005. - 50 с.
.Афанасьев А.Н. Формальные языки и грамматики: Учебное пособие. - Ульяновск: УлГТУ, 1997. - 84с.
.Волкова И.А., Руденко Т.В. Формальные языки и грамматики. Элементы теории трансляции. - М.: Диалог-МГУ, 1999. - 62 с.
.Пратт Т., Зелковиц М. Языки программирования: разработка и реализация / Под ред. А. Матросова. - СПб: Питер, 2002. - 688с.
7.Рейуорд-Смит В. Теория формальных языков. Вводный курс: Пер. с англ. - М.: Радио и связь, 1988. - 128с.
.Соколов А.П. Системы программирования: теория, методы, алгоритмы: Учеб.пособие. - М.: Финансы и статистика, 2004. - 320с.
.Федоров В.В. Основы построения трансляторов: Учебное пособие. - Обнинск: ИАТЭ, 1995. - 105с.
Приложение A
Текст программы
Лексический анализ
unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids;= class(TForm): TStringGrid;: TStringGrid;: TButton;: TButton;: TMemo;: TButton;: TButton;: TMemo;: TStringGrid;: TStringGrid;: TButton;Button1Click(Sender: TObject);Button2Click(Sender: TObject);Button4Click(Sender: TObject);Button3Click(Sender: TObject);FormCreate(Sender: TObject);Button5Click(Sender: TObject);
{ Private declarations }
{ Public declarations };: TForm1;:string = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя';:textfile;:string;,k2,k3:string;:set of byte;
{$R *.dfm}TForm1.Button1Click(Sender: TObject);a:textfile;:string;:integer;(a,'слова1.txt');(a);:=0;eof(a)true do(c,s);.lines.add(s);;(c);;TForm1.Button3Click(Sender: TObject);=set of char;m,r,f,d:textfile;,number,ogran1,ogran2,ogran3:char1;,j,n,nlex,ntab,nstr,error:integer;,stroka:string;:boolean;:Extended;.Memo1.Clear;j:=0 to Form1.StringGrid3.Cols[0].Count-1 do.StringGrid3.Cells[0,j]:='';.StringGrid3.Cells[1,j]:='';;j:=0 to Form1.StringGrid4.Cols[0].Count-1 do.S