русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Абстрактный синтаксис


Дата добавления: 2015-06-12; просмотров: 1477; Нарушение авторских прав


Для визуального представления входной последовательности используется абстрактное синтаксическое дерево. Абстрактное синтаксическое дерево – это абстрактное представление конструкции языка, полученной из дерева разбора.

Для получения результата трансляции необходимо с грамматическими символами связать атрибуты. С продукциями грамматики связываются семантические действия, вычисляющие значения атрибутов.

Генератор YACC позволяет с правой частью каждой продукции связывать соответствующее семантическое действие.

GOAL : VARZONE PROGZONE { m[i] := 'goal('+m[$1]+','+m[$2]+')'; $$ := i; inc(i); }

VARZONE : key_var id LIST_ID dp typ tz VARZONE1 { m[i] := $1+'('+$5+'('+$2+m[$3]+')'+m[$7]+')'; $$ := i; inc(i); }

| { m[i] := ''; $$ := i; inc(i); }

В данном случае для вычисления синтезируемого атрибута стартового нетерминала GOAL необходимо вычисление атрибутов нетерминалов VARZONE и PROGZONE. их вычисление возможно благодаря соответствующим продукциям и связанными с ними семантическими действиями:

VARZONE : key_var id LIST_ID dp typ tz VARZONE1 { m[i] := $1+'('+$5+'('+$2+m[$3]+')'+m[$7]+')'; $$ := i; inc(i); }

| { m[i] := ''; $$ := i; inc(i); }

PROGZONE : key_begin COMMANDS key_end tchk { m[i] := 'progzone('+m[$2]+')'; $$ := i; inc(i); }

После того, как все атрибуты, необходимые для вычисления, будут найдены, мы сможем увидеть результат трансляции в форме абстрактного синтаксического дерева.

Программа, реализованная в данной курсовой работе, выводит на экран результат разбора или сообщение на ошибке. Так, для входной последовательности «var a : integer;begin read(x);y:=x;end.» будет построено следующее абстрактное дерево:

goal(var(integer(a)),progzone(read(x),prisv(y,x)))

Результат работы программы представлен на рисунке 4.1

Рисунок 4.1 – Результат работы программы



Наглядное представление дерева разбора изображено на рисунке 4.2.

Рисунок 4.2 – Абстрактное синтаксическое дерево


Заключение

В данной курсовой работы была написана программа, которая анализирует на правильность код подмножества языка Pascal. Если вводимая последовательность верна, строится абстрактное синтаксическое дерево. Иначе выводится соответствующее сообщение об ошибке. На основании этого, можно сделать вывод о том, что программа реализует все необходимые функции.

При написании данной курсовой работы был изучен материал по курсу теории автоматов, в частности метод приведения недетерминированного конечного автомата к детерминированному и его минимизация, приобретены навыки работы с генератором синтаксических анализаторов YACC.

Таким образом, цель курсовой работы была достигнута.

 


Литература

 

1. Ахо А., Лам М., Сети Р., Ульман Д. Компиляторы: принципы, технологии и инструментарий, 2-е изд.: Пер. с англ. – М. : ООО «И.Д. Вильямс», 2008 – 1184 с.

2. Гордиенко А. П., Салина Н. И. Методические указания по выполнению лабораторных и практических работ по дисциплине: теория языков программирования и методы трансляции, – О. : ОрелГТУ, 2007 – 108 с.

3. Опалева Э.А., Самойленко В.П. Языки программирования и методы трансляции : [учеб. пособие]. СПб. : БХВ-Петербург , 2005. - 476 с., ил.

4. Хопкрофт Дж., Мотвани Э., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд.: Пер. с англ. – М. : Издательский дом «Вильямс», 2002 – 528 с.


Приложение А

(обязательное)



<== предыдущая лекция | следующая лекция ==>
Лексический анализатор | Модуль лексического анализатора


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.67 сек.