СТАТЬИ АРБИР
 

  2019

  Октябрь   
  Пн Вт Ср Чт Пт Сб Вс
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
   

  
Логин:
Пароль:
Забыли свой пароль?


Особенности построения абстрактного синтаксического дерева вывода программы на фазе синтаксического анализа при компиляции


ОСОБЕННОСТИ ПОСТРОЕНИЯ АБСТРАКТНОГО СИНТАКСИЧЕСКОГО ДЕРЕВА ВЫВОДА ПРОГРАММЫ НА ФАЗЕ СИНТАКСИЧЕСКОГО АНАЛИЗА ПРИ КОМПИЛЯЦИИ

С целью выполнения программы на ЭВМ ее исходный код должен быть откомпилирован. Компиляторы составляют существенную часть программного обеспечения (ПО) ЭВМ. Это связано с тем, что языки высокого уровня (ЯВУ) стали основным средством разработки программ.

Модули компиляции можно представить следующим образом (рисунок:

1):

Погодная про грамма

Целевая программа

Рисунок 1 - Модули компилятора

На фазе лексического анализа (ЛА) входная (исходная) программа, представляющая собой поток символов (литер), разбивается на лексемы. ЛА может работать в двух основных режимах: либо как подпрограмма, вызываемая синтаксическим анализатором (СинА) для получения очередной лексемы, либо в режиме «полный проход», результатом которого является файл лексем. Модуль СинА работает с аппаратом грамматик: по набору лексем, полученных на предыдущем этапе, строится дерево разбора - абстрактное дерево вывода (АСД) кода (английский термин - abstract syntax tree). Точнее можно сформулировать задачу СинА так: является ли код программы выводимым из грамматики заданного языка?

В результате проверки выводимости получается дерево разбора кода.

На рисунке 2 показан пример построения АСД алгоритмом восходящего анализатора.

Пример: int main() { int b = а a;}

Рисунок 2 - Пример АСД для выражения b = а а

На рисунке 3 представлена общая структурная схема СинА.

Рисунок 2 - Общая структурная схема СинА

На рисунке 4 представлена блок-схема алгоритма СинА для математических выражений.

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

В данной работе представлен пример формирования АСД со ссылками на таблицу лексем для математического выражения.

Пример синтаксического анализа

Исходная строка'.

Т аблица лексем: а = (( sinb cA(t/y))Ax) k.

Кодировочная таблица: = ( А / ) a sinb с t у х к.

Синтаксическое дерево вывода (рисунок 5).

Таким образом, из совокупности АСД выражений строится АСД кода программы.

Узлы АСД, представляющие операции, на фазе генерации заменяются ассемблерными кодами, а затем машинным.

Список литературы

Молчанов А.Ю. Системное программное обеспечение. Учебник для вузов. Изд.: Питер, 2008.

Трубачева С.И. Системное программное обеспечение / Учебное пособие. Изд. ВУиТ, 2010.

Трубачева С.И. Системное программное обеспечение / Лабораторный практикум. Изд. ВУиТ. 2011.

УДК 338.242


ВИНОКУРОВ МИХАИЛ ЮРЬЕВИЧ Россия, г.Тольятти, ОДНО ВО «Волжский университет имени В.Н. Татищева» e-mail: apnp[AT]vuit.ru





МОЙ АРБИТР. ПОДАЧА ДОКУМЕНТОВ В АРБИТРАЖНЫЕ СУДЫ
КАРТОТЕКА АРБИТРАЖНЫХ ДЕЛ
БАНК РЕШЕНИЙ АРБИТРАЖНЫХ СУДОВ
КАЛЕНДАРЬ СУДЕБНЫХ ЗАСЕДАНИЙ

ПОИСК ПО САЙТУ