Разработка компилятора модельного языка. Отчет. Пояснительная записка гоу огу 230105. 60. 11. 06 O руководитель работы Ишакова Е. Н. " " 2011г. Исполнитель
Скачать 1.59 Mb.
|
Перевод в ПОЛИЗ операторов. Каждый оператор языка программирования может быть представлен как n-местная операция с семантикой, соответствующей семантике оператора.Оператор присваивания I as B в ПОЛИЗе записывается: IBas, где «as» - двуместная операция, I, B – операнды операции присваивания; I – означает, что операндом операции «as» является адрес переменной I, а не ее значение. Пример 2: Оператор x as x-1 в ПОЛИЗе имеет вид: x x 1 - as. Оператор перехода в терминах ПОЛИЗа означает, что процесс интерпретации необходимо продолжить с того элемента ПОЛИЗа, который указан как операнд операции перехода. Чтобы можно было ссылаться на элементы ПОЛИЗа, будем считать, что все они пронумерованы, начиная с единицы (например, последовательные элементы одномерного массива). Пусть ПОЛИЗ оператора, помеченного меткой L, начинается с номера p, тогда оператору безусловного перехода goto L в ПОЛИЗе будет соответствовать: p!, где ! – операция выбора элемента ПОЛИЗа, номер которого равен p. Условный оператор. Введем вспомогательную операцию – условный переход «по лжи» с семантикой if not E goto L. Это двуместная операция с операндами E и L. Обозначим ее !F, тогда в ПОЛИЗе она будет записываться: E p !F, где p – номер элемента, с которого начинается ПОЛИЗ оператора, помеченного меткой L. С использованием введенной операции условный оператор if E then S else S4 в ПОЛИЗе будет записываться: E p1 !F S p2 ! S4, где p1 – номер элемента, с которого начинается ПОЛИЗ оператора S4, а p1 – оператора, следующего за условным оператором. Пример 3: ПОЛИЗ оператора if a>1 a as a/3 else a as a/9 представлен в таблице 2.3. Таблица 8 – ПОЛИЗ оператора if
Оператор цикла while. С учетом введенных операций оператор цикла whileVdoOp в ПОЛИЗе будет записываться: V p1 !FOppo !, где po – номер элемента, с которого начинается ПОЛИЗ выражения B, а p1 – оператора, следующего за данным оператором цикла. Оператор цикла for. С учетом введенных операций оператор цикла forOprtoVdoOp в ПОЛИЗе будет записываться: OprVp1 !FOpII 1 +aspo !, где po – номер элемента, с которого начинается операция сравнения , а p1 – оператора, следующего за данным оператором цикла. Операторы ввода и вывода языка М одноместные. Пусть R – обозначение операции ввода, а W – обозначение операции вывода, тогда оператор readI в ПОЛИЗе запишется как IR, а оператор writeE – EW. Составной оператор {S1; S2;...; Sn } в ПОЛИЗе записывается как S1 S2... Sn.Пример 4: ПОЛИЗ оператора while i<1 do y as i*i+1: i as i-1; представлен в таблице 2.4. Таблица 9 – ПОЛИЗ оператора while
Синтаксически управляемый перевод На практике синтаксический анализатор, семантический анализатор и генерация внутреннего представления программы осуществляется часто одновременно. Способ построения промежуточной программы – синтаксически управляемый перевод. В его основе лежит грамматика с действиями. Параллельно с анализом исходной цепочки лексем осуществляются действия по генерации внутреннего представления программы. Для этого грамматика дополняется вызовами соответствующих процедур. Таблица 10 - Спецификация основных процедур и функций ПОЛИЗа
3.5 Интерпретатор программы Запись программы в форме ПОЛИЗа удобна для последующей интерпретации (выполнения программы) с помощью стека. Массив ПОЛИЗа просматривается один раз слева направо, при этом: 1) если очередной элемент ПОЛИЗа является операндом, то его значение заносят в стек; 2) если очередной элемент – операция, то на «верхушке» стека находятся ее операнды, которые извлекаются из стека, над ними выполняется соответствующая операция, результат которой заносится в стек; 3) интерпретация продолжается до тех пор, пока не будет считан из ПОЛИЗа признак окончания полиза, стек при этом должен быть пуст. Функции, предназначенные для интерпретации программы, приведены в таблице 5. Таблица 11 – спецификация основных процедур и функций интерпретатора
4 Структурная организация данных 4.1 Спецификация входной информации Входными данными данного программного средства является текст программы на модельном языке. В главное окно программы вводится текст, который в последующем анализируется и интерпретируется в машинный исполняемый код. Таблица 12 – Входная информация
4.2 Спецификация выходной информации Выходными данными является заключение о лексической, синтаксической и семантической правильности введенной программы, или сообщение об ошибке с указанием номера строки и характером ошибки. А также запускается консольное приложение, непосредственно реализующее описанный в тексте программы алгоритм. Таблица 13 – Выходная информация
5 Разработка алгоритма решения задачи 5.1 Укрупненная схема алгоритма программного средства представлена на рисунке 1. Рисунок 1 – Укрупненная схема алгоритма программного средства 5.2 Детальная схема алгоритма программного средства представлена на рисунке 2. Рисунок 2 – Детальная схема процедуры private void BinToDec() 6 Установка и эксплуатация программного средства Для того чтобы установить данное программное средство на ПК необходимо подключить носитель (CD, Flash Device), на котором это программное средство находится. Далее необходимо открыть проводник, найти данный носитель информации, найти на нем данное программное средство и скопировать его на локальный диск (винчестер). Данное программное средство позволяет быстро получить результат, не требуя больших затрат ресурсов компьютера. Оно предназначено для использования в семействе операционных систем MS Windows. Поставляется оно в виде одного файла размером 755 Кбайт. Для работы необходимо запустить исполняемый exe-файл. 7 Работа с программным средством Для начала работы с программным средством необходимо запустить файл LA.exe. После этого появляется окно(рисунок 3). Рисунок 3 – Вид рабочего окна программы В данном окне можно вводить, редактировать, текст программы на модельном языке. После загрузки текста программы можно произвести лексический, синтаксический, семантический анализ программы, перевести программу в полиз, запустить программу, выбрав соответствующий пункт меню, нажав кнопку. Рисунок 4 – Кнопка запуска программы. После этого если программа написана правильно, то заполняются таблицы служебных слов, разделителей, идентификаторов, чисел (рисунок 5), выводится множество лексем выводятся сообщение об ошибках, или об их отсутствии(синтаксический и семантический анализ(рисунок 6)), появляется окно терминала – рисунок 7, в котором вводятся данные для работы программы, и выводится результат программы. Рисунок 5 – Результат работы лексического анализатора. Рисунок 6 – Сообщение об ошибке. Рисунок 7 – Окно терминала . Заключение Мы закрепили теоретические знания в области теории формальных языков, грамматик, автоматов и методов трансляции. Разработали на языке программирования С# в системе Visual Studio 2010 программное средство реализующее компилятор модельного языка программирования. Программное средство способно выполнять следующие функции: - ввод и редактирование текста программ, написанных на определенном модельном языке; - производить лексический анализ программ; - выполнять синтаксическую и семантическую проверку программ; - переводить программы в обратную польскую запись; - интерпретировать программы на модельном языке, записанных в форме ПОЛИЗа. Программное средство протестировано на различных программах, написанных на модельном языке. Программное средство безошибочно производить лексический анализ программ, выполняет синтаксическую и семантическую проверку программ, переводить программы в обратную польскую запись, интерпретирует программы на модельном языке, записанных в форме ПОЛИЗа. Таким образом, поставленная цель курсовой работы достигнута. Список использованных источников 1 Гордеев А.В. Системное программное обеспечение [Текст]: учеб. для вузов / А. В. Гордеев, А.Ю. Молчанов; под. общ. ред. А.В. Гордеева. – СПб.: Питер, 2001. - 734 с.: ил.; 24 см. - Библиогр.: с. 719-724. 2 Ишакова Е.Н. Теория языков программирования и методов трансляции: учебное пособие / Е.Н. Ишакова. – Оренбург: ИПК ГОУ ОГУ, 2007. – 137 с. 3 Калинин А.Г. Универсальные языки программирования: Семантический подход [Текст] / А.Г. Калинин, И.В. Мацкевич. – М.: Радио и связь, 1991. - 398, [1] с.: ил.; 21 см. - Библиогр.: с. 395-398. 4 Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение. – СПб: Питер, 2001. – 736с. Приложение А Таблицы служебных слов и ограничителей Таблица 14 – Таблица служебных слов
Таблица 15 – Таблица ограничителей
1> |