Конструирование транслятора для модельного языка

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

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