автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Автоматизированный практикум по методам конструирования компиляторов

кандидата технических наук
Андреев, Олег Юрьевич
город
Ленинград
год
1991
специальность ВАК РФ
05.13.11
Автореферат по информатике, вычислительной технике и управлению на тему «Автоматизированный практикум по методам конструирования компиляторов»

Автореферат диссертации по теме "Автоматизированный практикум по методам конструирования компиляторов"

ЛЕНИНГРАДСКИЙ ОРДЕНА ЛЕНИНА И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ

на правах рукописи

Андреев Олег Юрьевич

АВТОМАТИЗИРОВАННЫЙ ПРАКТИКУМ ПО МЕТОДАМ КОНСТРУИРОВАНИЯ КОМПИЛЯТОРОВ

Специальность 05,13.11 "Математическое и программное обеспечение вычислительных машин, комплексов, систем и сете?"

Автореферат диссертации на соискание учено? степени кандидата технических наук.

Научный руководитель к.т.н., дсцент Р.А.Ашинянц

Ленинград, I991.

/ / у?г

' / с> )

Работа вигалпзпа б :.!oc:co2c::o:i ¿шсккуте прнборосгроэ

Научны:: руководитель — кандидат технических наук, доцент

P.A. Ашгнянц

Официальные оппоненты - дог.тор физико-математических наук,

профессор И.Л.Братчкков - кандидат технических наук, доцент П.И.Васькш

Ведущая организация - Научно-исследовательский институт

системных исследований АН СССР

Защита состоится К^?... 1991 года в ,ff{,.. час.

на заседании специализированного совета К 063.57.48 в Ленинградском государственном университете по адресу: Ленинград, Летродворец, Библиотечная плоцадь, 2, Факультет Л.1-П7.

Отзыв на автореферат (I экземпляр, заверенный печатью) присылать по адресу: IS82C4 Ленинград, Петродворэц, Библиотечная площадь, 2, Факультет Пл-ЛУ, ученому секретарю специализированного совета Чернышеву A.A.

С диссертацией :.:о:::но ознако;д1Ться в библиотеке А.1.1. Горького ЛГУ по адресу: Ленинград, Университетская наб., 7/9.

Автореферат разослан ...... 1251 г.

Ученый секретарь специализированного совета

ОБЩАЯ ХАРАКТЕРНОТУКА РАБОТЫ

Актуальность теш

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

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

В контексте новы:: технологии програ.'.йшрования создание практикумов общения конструированию слог.нкх систсм общего назначения, е в частности, конструирования компиляторов, является актуальным. Такие практикумы предполагают самостоятельную разработку отдельных фрагментов, встраиваемых в базовый конструктив, обеспечпЕазадй автономное и контекстное функционирование этих фрагментов с широкой визуализацией процесса функционирования (г.^/лькшликацпя) и возможностью самоконтроля обучаемого безовши средствами. Подобная ферма работы истивизпрует у обучаемого творческое начало, обусловливаемое только pai.niai.rc технологии программирования.

Цель работы

Целью настоящей работы является создание лабораторного практикума по методам конструирования компиляторов (ШКК), основывающе на разработанном в настоящей диссертации базовом компиляторе (БК), являющимся основным конструктивом, с-помощью и на базе которого пользователь момет конструировать из фрагментов задач функционирующую иллюстрированную кхпзклцруздую систему. Тем самым у пользователя вырабатывается практически:: навык написания компиляторов, он становится готов к самостоятельной реализации .компиляторов.

В соответствии с поставленной целью в работе решаются следующие задачи: ,

- создание базового компилятора практикума, б котором все

Разы выполнены в вкде отдельное задач, несь процесс коиппляцгз! иллюстрируется п имеется гозпогность замены отдельны:: модулей на аналогичные, написанные яользозгтелегл сгмостоятэльно ;

- разработка .нового подхода к составлению атрибутных грамма-тгпс, позволяющего быстрее обвить пользователя работе по составлению Я1 ;

- разработка простого п универсального по отнесению к исходному п объектному языкам компилятора языка внутреннего представления ;

Методы псслздованпй

Для репенпя поставленных теоретически:': и практических задач были использованы методы структурного програмг-згоовакня, методы теории коьпшляцпи п теории графов, а так.~е методы автоматической генерации кода.

Научная новизна

В соответствии с поставленной целью в работе решены следующие задачи:

- предложен новый подход к разработке атрибутных грамматик, при котором схема обхода НСД планируется на начальном этапе разработки АГ, а не вычисляется пак свойство упе шеэде2ся грашати-

кп ]

- разработан просто:; :: универсальный по отношению к исходному и объектному языкам компилятора язык внутреннего представления программ для генерации кода, где универсальность достигается возможностью заг.тены основных конструкций языка и/или их семантики;

- реализована методика активного обучения конструированию компиляторов, заключающаяся в замене отдельных составляющих моду-лед иллюстрированного базового компилятора программами, нгписан-ными пользователем ;

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

Практическая ценность

Практическая ценность работы заключается:

- е повышении интенсивносте и качества обучения конструированию компиляторов ;

- б -

- е приобретен:!:: еебн:;ов для дальнехпех сспэстоятельно£ работы по проектированию и реализации транслирующих систем ;

- в возможности использования БК для отладки граг.иматпк и д; опробации методов нейтрализации ошибок при разработке промыслек-ных компиляторов.

Ьнедренпе результатов работи

Практикум по кстодеи кэнстру^ОБакаг зоглЕяятэрэв (Ж) х. шел апробацию в НЙК математика-: Ленинградского государственного университета, используется в разработках предприятия "1!нйо:<1ир". Практикум используется дк обучения в ТегБЕрогскон радио-техн::ч' ком институте и на механико-математическом г,г::ультете !.Ьсг.оес::о: государстЕенного университета.

¿црооацпя работы

Работа догадывалась на республиканском совещанки-сешнвре "Использование 5ЕЛ з учёбкоз и научно-исследовательском работе студентов", проходившем в 19£8году в Новосибирске.

Объем и структура работы

Диссертация включает в себя 5 глав с приложениями к состой из 114 страниц текста. Первая глава - вводная. Излагается поста ка задачи, производится обзор существую:;:::: программ для обучен:: комп::ляц::н. Бторая глава посвящена лексическому и сннтаксическс анализу. Обосновывается выбор использованных в ILZCK методов, ог сываются архитектура и возможности пользователя. Б третьей глав описывается семантически:: анализ е ШСК, вводится понятие дина:' ческого повода i: проектированию атрибутных грамматик. Четвертг глава посвящена генерации кода е БК, вводится универсальных яз: внутреннего представления программ. Б пятой главе рассказываете о возможностях пользователя при работе с ILI3.

Краткое содержание работы

Б первой глаье обосновывается необходимость специально:: среды конструирования компиляторов, аде::в°тно отражающей соотв; ствумщЁ теоретический аппарат. Именно такую среду цредоставлш пользователю разработанный автором практику:.: по метода:.: констр:

рования компиляторов (И.КгС). Практикум базируется на, двух основных идеях: "компиляторный мультфильм" и язык еысокого уровня для написания компиляторов. Базу практикума составляет действующий компилятор с реального языка программирования, который далее будем называть базовым компилятором (ЕК).

- /

Компиляторны:! мультфильм представляет собой отображение на экране терминала процесса компиляции произвольной программы базо-вш компилятором практикума. Компилятор показывает все сбои данные-грамматики, стеки, таблицы, переменные - и комментирует свои действия. Пользователь сам управляет выбором материала для показа. Кроме того, почта все эти данные можно редактировать непосредственно в процессе работы компилятора.

Вторая идея практикума такова - дать пользователи возможность1; самому писать отдельные блоки ношалятора и заменять ими действующие. Эти блоки могут быть крупными, такими как предписание "разобрать", осуществляющее синтаксический разбор, и мелкими, например-"достать следующую литеру". В любом случае пользователь может использовать предписания более низкого уровня, что и создает языковуй среду для быстрого написания блоков компилятора.

На базе этих идей сформулированы следующие требования к базовому компилятору практикума:

1) ЕпзуализацЕЯ на экране терминала данных компилятора ;

2) реши работы - пошаговый, где шаг - это предписание. Каждый следующий шаг, а вместе с ним ц изменение картинки на экране, 1ГЖК выполняет лишь по требованию пользователя.;

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

4) предписания БК иллюстрируют собой процесс пошаговой разработки компилятора методом СЕерху-вниз;

5) некоторые предписания БК пользователь может заменить предписаниями, написанными им самостоятельно и выполняющими ту же задачу

6) пользователь в разрабатываемых им предписаниях может использовать предписания БК более низкого ¿¡ровня ;

7) БК допускает перенастройку на другие исходный или объектны:! языки ценой не слишком больших затрат ;

8) БК реализован на основе самых современных средств, разработанных в теории компиляции, причем теоретические конструкции сделаны возможно более обнаженными, наглядными. V

Главное отличие БК от всех остальных трансляторов заключается

в архитектуре, позволяющей заменять отдельные программы на предписания, выполняющие ту ле функцию ;: написанные пользователе-:.;. Таксе свойстео появляется благодаря максимальной дезинтеграции компилятора яг изолированные информационно-прочные блоки. При реализации: БК максимально разделены все сущкойгно ве;;скые логические компоненты

Методы компиляции, применяемые в БК, должны быть достаточно универсальными, не слишком слогкшглц для Еоспркятпя, яоддавеасыася визуализации а т.д. Таких методов в теории компиляции накоплено немало, но Еыбор конкретного метода не тлеет принципиального значения для ШКК. Решающее значение имеет такая реализация метода, при которой развязываются узлы мезду соЕземп трансляции и ме:::ду компонен-талк отдельных саз, визуализируется цепочка внутренних предста?ле-ний компилируемой прэгра:.;ыы, заменяются предписания. ÏImbhho для освещения этих качеств в диссертации подробно и на простых примерах списываются выбранные к реализации б БК методы компиляции. С той а точки зрения рассматриваются п пр:шятые при разработке ЕК ар:штек-турные решения.

Во второй глеве описывается общая архитектура ШК, а такае две первые его фазы - лексический и синтаксический анализ. Процесс компиляции б БК осуществляется: отдельными с точки зрения ОС зада-чаш. Интерфейс мезду отдельными задачам осуществляется с помощью текстовых £а2лов. Ка;;:дая последующая задача БК попользует результат предыдущей, ко промежуточные файлы uoiyT быть написаны и пользователем. Форматы и содержимое эти:-: промедуточных файлов описаш в главах диссертации, посвященных соответствующим фазам компиляц::: Таким образом, возмогла работа пользователя с отдельны:,г. задачами ÍI7IKK, соответствующими типичным ко:.:понзнтам процесса ко:,¡пилящии, при этом остальные задачи не используются.

БК осуществляет трансляцию с Фортрана в ассемблер Œ.l-4. Qopi-ран весьма распространен и достаточно прост. Еа::;но было, чтобы пользователь, начавший работать с ШКК, не тратил Бремени на изуч .ние исходного языка компилятора.

Еыбор Оортрана в качестве исходного языка не означает, что пользователь ШКК научится писать липь компиляторы с Фортрана. Б БК используются универсальные методы трансляции, причем особенно легко перенастраивается на другой исходный язык синтаксический анализатор. Специфично фортрановсний в БК липь сканер.

По различным соображениям, в том числе учитывая, что демоне5

- Й -

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

Алгоритм синтаксического анализа должен был производить разбор ; гоз:.:с::'но более пп.:ох:т.! классом грг::.:атпк, но вместе с тзм быть эффективным и часто применяемым на практике, кроме того, ае-латзльна простота алгоритма. 3 стих условиях предпочтительней оказалось реализовать з 1БКК сразу два алгоритма разбора: один - универсальный - нздетерминированный разбор сверху-вниз с возвратами и о.дин быстрый - ¿.¿^ (I) ~ анализ. Пользователь мо.~ет выбрать любой из нзх.: Бкбор заключается з том, что синтаксический анализатор (СА), как и все остальные сазы компиляции, реализован в БК отдельной задачей, которая существует в двух вариантах, соответствующих двум указанным метода!.!.

Итак, в синтаксическом анализаторе (СА) П.ФСК используются канонические алгоритм практически без вся;ии: изменений, однако их архитектура такош, что а) максимум информации и данных содержится . в текстовых-файлах, б) пользователь имеет широкая спектр возможностей при работе с СА. В ЕК синтаксический анализ - это фаза, где ' пользователь тлеет наибольшие возможности для самостоятельной реа-лизаиии. В СА от пользователя скрыта лишь реализация стеков, под- !--.держи работы с цепочкой лексем и программ, обеспечивающих эфЭев:-тивное представление грамматик. Еозмо".ности пользователя таковы: написание своей ¿¿Д1)-тз<5лпцы и/или грамыатакп, самостоятельное программирование алгоритмов разбора, написание алгоритмов восстановления от ошибок трансляции.

Как у;;э говорилось, исходны:.! языком для ЕК является Фортран, поэтому СА ШКК в своем поставочном варианте настроен на работу с Фортраном. Однако эта настройка выражается лишь в том, что вместе с СА поставляются готовые файлы с гра'.ыатикой и (I)-таблицей Фортрана. Содержание этих файлов пользователь мояет заменить на грамматзку любого языка. Таким образом, СА ПЛКК универсален и глояет быть использован для работы с любым языком.

йтак, пользователь ШКК мозет писать свои грамматики для СА и изучать разбор по этим грамматикам любой цепочки лексем. В случае грамматик с произвольных языков мы получим практикум по теории ■ формальных языкое. При использовании СА ШКК ло основному назначению студента!.! мог/т быть даны следующие задания, не требующие самостоятельной реализации: I) для некоторого языка Ь. по КС-грам-

_ о _

мстпке общего гх^а нгл^есгь й стладптв Ц^ (I;-гра::.:а:-:;::у ; для ГОТОВОЙ Ь1л{1) —грамматики подмножества какого-либо ЯП построить и отладить (I)-таблицу.

Так же как и при работе с остальными фазами компиляции для СА можно написать свой основной алгоритм разбора. Скажем, пользователю дается подробное описание все:; исполнителей 0.1, сзмангдк;; ни .:;;зд-л::сг;:;и1 :: текст фирменной реализации предписания "пгрсер. -разобрать". Требуется написать программу- недетерминированного разоора сверху-вниз или снизу-вверх.

Еще одна возможность при работе с СА предназначена уже скорее для специалистов в области компиляции и студентов, специализирующих' ся по этой теме. Имеется в виду самостоятельное написание пользователем процедуры восстановления от синтаксической ошибки. В самом БК предписание "восстановиться" реализовано простейшим способом, но допускает замену.

В /»¿»(1)-гхаапзгторе 211 в качестве выходной цепочки используется исполнитель "левый стек", а з качестве синтаксического стека -"правы:! стек". Это дзет возможность при обработке ошибок помимо анализа грамматики осуществлять возврат по ходу разбора или просто проследить последовательность др::лененных правил. Таким образом, хорошо подготовленный пользователь получает возможность реализоват: практически любые алгоритмы по восстановлению от ошибок.

Третья глаза посвящена семантическому анализу в ЕК и новой методике проектирования атрибутных грамматик (ИГ). Семантический анализ и генерация кода в БК построены на использовании атрибутные: грамматик. В БК используются так называемые упорядоченные атрибутные грамматики, длл которых нэ фиксируется количество обходов дерева, но схема проходов семантического вычислителя для каждого нетерминала градлатин:: известна еще до компиляцип, то есть не зависит от контекста.

В работе проведен анализ общепринятой практики сосгавлешя А." и выявлено противоречие в этом процессе, делающее написание и ана^ лиз АГ более сложными, чем это необходимо. Суть противореча заключается в локальной записи посредством АГ глобальных понятий семантики языков програ:д.-шрованш, таких, например, как объемлэщи блок. Предложена иная методика составления АГ, отталкивающаяся от анализа стратегии движения семантического лччнслптеля по дереву. Суть ее в том, что на основе умозрительного анализа семантики язь ка составляется таблица пэр-ходов сэ:оптического г-гппслптэля дня

каждого нетерминального символа грамматики, а затем эта таблица уже только уточняется.'.Тогда как при общепринятой методике таблица' переходов является результатом ь.нгх:за уже готовой АГ. 2тот подход к составлению АГ, названный автором динамическим, позволяет струк-ту;хрпватв сам г;оц:зс разодетых гржммат::::::, что особенно важно для обучения.

Сзмаптхчэе .хй анализ :: генерация кода реализованы в ЫС на одной и той же вычислительной базе. Имеется универсальны:: семантический вычислитель, который но задашлой таблице переходов и АГ вычисляет атрибуты на произвольном нагруженном синтаксическом дереве, в том числе и на абстрактном' синтаксическом дереве. Пользователь может самостоятельно писать часть АГ :: ТП, где ему предоставляются универсальные настраиваемые таблицы. Гра:.-:атхки :: деревья для семантического анализа и для генерации кода ргзнне.

В четвертой главе описывается реализация в БК генерации к.ода. ГК компилятора основывается на методе лорспула. Каждый: нетерминал ДПП определяется с помощью АГ в терминах команд объектной мамины. Промежуточный язык ЕК - это нагруженный греф, в котором уздн соответствуют распространенным конструкциям языков программирования. Этот язык писался для фортрана, и в нем присутствуют лишь узлы, необходи-ше для представления фортран-программ. Например, в нем есть узлы <f если то> , ) , ¿ + целое короткое> . Семантика узлов не меняется при переходе к другом;,7 доходному языку, вместо этого добавляются новые узлы н убирается "асть старых. Например, при переходе от Фортрана к Паскалю добавятся, в частности, узлы /Паскадь зызоз>, <^если то иначеПри изменении объе::тного языка заменяется АГ, описывающая перевод узлов в объектный код. Созданный промежуточный язык предельно прост и в то же время универсален по от::опен:во к неходкому и объектному языкалл ::о:хппляц::ц. Создать универсальный Ш, пригодный для записи програгдл, названных на мироном спектре языков, - задача очень сложная. Она и приводит к результатам, непосильным для понимания, в учебных условиях. Б БК не универсальность достигнута за счет расширяемости IK.

Б пятой главе подробно описывается работа пользователя с ШКК. Основные возможности пользователя при работе с ЕЕ.КК таковы: I) замена некоторых предписаний БК своими, 2) замена грамматик несходного и объектного языков ЕК. Зтн возможности реалпззгются следующим образом.

модулем в ШКК называет сл. набор подпрограмм, хранящихся в од-

ном файле. Б БК выделены предписания, которые можно замешать функционально эквивалентными, не затрачивая особых усилий на установление связей с используемыми предписаниями БК. К к: числу принадлежат, в частности: сканер.сканировать, сканер.иден и ключ слоЕа.вы-дзллть_2)0, число.разобрать число, парсер.разобрать. Эти предписания ранятся в виде отдельных модулей. Будем называть их пзменяе-

»»¿а»'!«!*

Таким образом, в БК часть его собственных, т.е. напихннкх разработчиком, "фирменных" модулей может быть заменена мспулями, написанными пользователем. Предписания, написанные пользователем, тоже будут выполняться по ¡задам. ..Максимально большие шаги оггреде-тяштся те::, что только щагами могут происходить изменения экрана. Однако, вставляя в свой текст вывод комментариев и вызов- паузы, пользователь момзт измельчить пеги выполнения.

Далеко не все предписания БК заменяемы. И.ЕСК как бк предоставляет пользователю специальный язык конструирования компиляторов. Все предписания ЕС, которые можно рассматривать как реализующие отдельные операторы этого языка, не являются заменяемы!'.!!!. Приведе! такой пример. Для реализации синтаксического анализатора (парсера необходимы стеки. Работу со стека:.ш з БК организуют исполнители "левый стек" и "правый стек". Предписания стеков не могут быть на писаны пользователем, хотя он их, конечно, использует, если пишет сам синтаксический анализатор.

Пользователь, самостоятельно реализаций одно из. предписание БК, бзгдет иметь в своем распоряжении список'всех исполнителей и предписаний, тексты грамматик, примеры использования предписании и оформления модулей. В случае, когда будет дано задание реализовать какое-либо предписание БК на основе иного, чем в БК, алгори' ма, пользователю будет дана возможность изучить фортран-тексты "фирменного" заменяемого предписания.

Система визуализации БК осуществляет показ на экране следую щих объектов: I) комментарии по работе БК, 2) текущее внутреннее представление компилируемой программы, 3) некоторые переменные Б •4) грамматики и пояснительные тексты.

В процессе работы БК пользователь может изменять так казыва мое меню показа, в котором помечаются предписания, подлежащие в: зуализащш. Не помеченные таким образом предписания выполняются как один шаг. В меню показа находятся, в основном, заменяемые п писания. Зслп предписание помечено к показу, то его выполнение разбивается на шаги, установленные разработчиком этого предписа

- Г2 -

Грамматики, большие пояснительные тексты и некоторые внутрен-нпе объекты компилятора не показываются на экране постоянно. Однако имеется возможность жтду лзбнми двумя аага:.ш БК посмотреть на эк-

зтся стандартная картинка визуализации.

Просмотр текстов :: вообще работа в _Т.!3 зыпсллепн о ооб-зданием принципа непосредственности при работа за терминалом. Суть принципа в том, что пользователь видит на экране всегда лишь объект своей работы, команды пользователя на экран не отображаются, а способ реализации диалога от него по-еозмо;хности скрыт. Б частности, непосредственные редакторы не дают пользователю знать о том, какую часть текста они хранят в оперативной памяти, не выводят имен за-п:мннаэ:.Г!:: в макро команд. Пргг.тэр непосредственной диалоговой нро-грагатн - зто широко юаспаостранекккй текстовый редактор ":.п:кро:пп)-55" Команды П.КК для просмотра гэксхоз сделаны максимально псхожжл: па аналогичные команды "гящрошра".

Ссногнь:е результаты работы

1. Обосновывается необходимость создания программных средств, 1 обеспечивающих практическую подготовку профессиональны:: программистов. Сформулированы требования к практикуму по методам конструирования компиляторов (!Ы2С). Предлагается новый подход к обученпэ конструированию компиляторов. Подход основывается на сочетании ак- • тивного и пассивного обучения. С одной стороны, пользователю даются средства, существенно облегчающие самостоятельную реализацию блоков компилятора, а с другой - функционирующий компилятор, отображающий свою работу на экране дисплея.

2. Спроектирован и реализован иллюстративный базовый компилятор (БК) практикума, состоящий из четырех задач, соответствующие основным фазам компиляции: лексического анализатора (ДА), синтаксического анализатора (СА), семантического анализатора (СеА) п генератора кода (ГК). Б каждой из эта: задач пользователь имеет возможность использовать ключевые алгоритмы данной фазы, написанные им самостоятельно.

3. Обосновывается выбор фунщпоналъной модели Ж с Фортрана, описывается реализация .ЗА. Произведена классификация существующих методов синтаксического анализа с точки зреиш требований, налагаемых на математический аппарат ШКК. Б БК реализованы два метода: недетер:.п:нирэванкый разбор свер:г/-зкпз с возвратами и (!)-раз-

бор. Реализованы структуры данных, позволяющие пользователю существенно изменить или дополнить существующие алгоритмы. Обеспечена максимальная универсальность СА. В СА пользователем могут быть заменены: I) грамматика и ' (I)-таблица, что позволяет вести разбор любого формального языка ; 2) алгоритм разбора ; 3) алгоритм восстановления от синтаксических ошибок в исходно.; программе.

4. В соответствии с проведенным в работе анализом существующих методов работы с атрибутными грамматиками (АГ) предлагается новый подход к разработке АГ, названный динамическим. Суть динамического подхода в том, что схема обхода НСД планируется на начальном этапе разработки АГ, а не вычисляется как свойство уже тлеющейся грамматики. Динамический подход более адекватен статической семантике-языков программирования, удобен для поэтапной разработки и отладки АГ, что особенно важно при обучении.

5. Для ШКК реализован универсальный семантический вычнслптел вычисляющий в соответствии с упорядоченной атрибутной грамматикой (УАГ) атрибуты на нагруженном синтаксическом дерезе. В зависимости от используемых деревьев и грамматик реализованный семантический вычислитель может осуществлять как семантический анализ, так и генерацию кода. Сами гра;.сматпки должен разрабатывать пользователь, с ПЖК поставляются лишь заготовки для символьных таблиц.

6. При разработке ГК ПЖК бьта проделан анализ существующих методов генерации кода по АГ, дано обоснование выбора метода Хорс-пула. Создан специальный язык для хранения внутреннего представления программы. Зтот язык обладает такими свойствами, как универсальность по отношению к исходному и объектному языку компиляции, простота и наглядность, возможность эффективной обработки по методу Хорспула.

7. Полученный БК обладает универсальностью как по отношению к исходному, так и по отношению к объектному языкам компиляции. Это достигается применением табличного метода синтаксического анализа, но .в еще большей степени благодаря созданию универсального семантического вычислителя и простого, расширяемого языка промежуточного представления.

8. Техническая реализация БК нетрадиционна для области построения трансляторов. В БК максимальное количество данных хранится в текстовых файлах и допускает просмотр и редактирование непосредственно в процессе работы БК. Такая архитектура снижает скорость компиляции, что, впрочем, несущественно для иллюстрированного

¿чеЗнэго компилятора, ::о дез? возможность лолвзогсгелз бгстрее г. глубже разобраться в процессе трансляции.

9. Созданный ГНС используется в разработках предприятия "Ин?оМ1П)", а такие для обучения - з Таганрогском радно-тепнпческом институте и на менакпко-матэматпчеоном Пгнультете Московского государственного университета.

Основное содержание диссертации отражено в работа;;:

- Андреев 0.10.: "Разраоотка автоматизированного грактикула по метода!.' конструирования компиляторов", в "Применение £ВГЛ в учеОном процессе. Опкт ксполъзовгнпя ЭК.; в обучении": межвузовски;! сб. н. тр-в, Посква: Б3.',11, 1££3, с. 42~££.

- Андреев 0.1?., Ампнянц ?.А.: "Возможности применения компиляторов в практикума;; для подготовки программистов", в "Использование мпнп-п 1.::п:росБП в автоматизации управления, каучнг;; исследований :; обу-чення'": со.статеП, Бороне:;:: ЫГ, 1Н86, с. 1СЗ-П0.

- Андреев С.П.: "Автоматизированный практикум по методам конструирования компиляторов", в "Испо.тьзованпе сШ в учебной и паучно-псследоваталпско;; работе студентов", Республиканское сонецание-семинар 20-28 января 1£СС г., Новосибирск, пзд-во КГУ, 1££8,

с. 128-2СЗ.