Помощь в написании студенческих работ
Антистрессовый сервис

Введение. 
Подход к реализации атрибутов в системе SynGT

РефератПомощь в написанииУзнать стоимостьмоей работы

Современные системы построения трансляторов для корректного отображения транслируемого языка во внутреннее машинное представление используют информацию о языке, определяя его синтаксис и статическую семантику в виде специальной грамматики, которая кроме основной своей функции порождения предложений языка позволяет задавать трансляции, необходимые разработчикам. В теоретических работах под… Читать ещё >

Введение. Подход к реализации атрибутов в системе SynGT (реферат, курсовая, диплом, контрольная)

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

В теоретических работах под синтаксисом понимают множество правил грамматики, а все остальное в определении языка относят к семантике. В этом случае семантику делят на две части: те свойства языка, которые можно проверить в процессе трансляции (компиляции), называют статической семантикой, а остальные свойства языка — динамической семантикой.

В данной работе будем полагать, что грамматика, определяющая тексты языка, называется синтаксисом, некоторые правила, относящиеся к правильному использованию слов языка, называются статической семантикой, тогда как под динамической семантикой понимается то, как может быть установлено I/O отображение, создаваемое программой в процессе исполнения.

Полагаем, что программа состоит из слов. В этом случае терминальные символы КС-грамматики будут словами языка.

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

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

В теории формальных языков (как части Computer Science) к настоящему времени создано достаточно много абстрактных формализмов для определения языков программирования. Работа по созданию таких формализмов велась с 50-х годов прошлого столетия в 3-х направлениях:

  • • встраиванием атрибутов и предикатов (проверок) в КС-грамматику;
  • • введением и пошаговой модификацией состояний преобразователя, построенного по исходной грамматике.

В первом направлении были сделаны несколько безуспешных попыток до того момента, как была придумана W-грамматика А. ван Вейнгаардена, которая использовалась в определении языка Algol 68 [11], [12], [13].

Во втором направлении важной работой стала статья Д. Кнута [7], в которой описана идея о том, что каждая синтаксическая конструкция имеет наследуемые и синтезированные атрибуты. Затем появилась аффиксная грамматика Костера [8,9,10], в которой идея с атрибутами Кнута была более развита, и которая стала теоретическим базисом для языка CDL (Compiler Definition Language) [10,14]. Функциональные грамматики тоже относится к этому направлению. Помимо Кнута похожий метод был предложен Гриффитсом (M.Griffits) [17].

Третье направление, которое основывается на работе Ледгарда (H.F.Ledgard)[15], было практически применено в работах Вильямса (M.H.Williams)[16] и др. В этом случае имеется таблица (или что-то подобное ей), содержащая текущие имена с текущими атрибутами, и есть множество функций, которые связаны с синтаксическими конструкциями для модификации состояния таблицы. В таком методе терминальные символы КС-грамматики имеют функции перехода из состояния в состояние. Атрибуты для синтаксических единиц более высокого уровня вводятся так же, как в грамматике А. ван Вейнгаардена. Такой метод дает более ясное разделение между синтаксисом и статической семантикой.

синтаксический анализатор преобразователь грамматика.

Показать весь текст
Заполнить форму текущей работой