1. Содержание работы.
Формульный транслятор эта программа, которая переводит исходную программу, написанную на входном языке, в объектный псевдокод, который в последствии, после необходимой оптимизации, может быть заменён машинным кодом с абсолютной адресацией.
Для написания программы на входном языке необходимо создать язык, в который бы входили: заголовок программы, оператор описания типа переменной, оператор ввода переменной, оператор присвоения и оператор вывода результата. Для оператора присвоения необходимо предусмотреть знаки арифметических операций, скобки и элементарные функции, которые выдаются вместе с вариантом задания. А также, разделители и служебные символы. В связи с этим разрабатывается контекстно-свободная грамматика, которая в последствии позволит провести грамматический разбор программы на исходном языке. Грамматическому разбору должен предшествовать лексический анализ, который обычно не вызывает затруднений (см. лабораторные работы №1 и №2).
Оператор присвоения имеет общий вид для всех вариантов
Y=Y(x).
Результатом выполнения программы должен быть текст в объектном псевдокоде. Для чего необходимо оговорить его содержание. В работе рекомендуется использовать так называемые четвёрки, имеющие вид
КОП, А1, А2, А3,
где: КОП - код операции,
А1- адрес первого операнда,
А2 - адрес второго операнда,
А3 - адрес результата.
Хотя возможны и другие варианты, например, по двухадресной и одноадресной схемам.
Используемые данные могут быть как целыми, так и с плавающей точкой.
2. Задание по работе.
1. Получить вариант задания у преподавателя.
2. Разработать язык формульного транслятора.
3. На основе разработанной регулярной грамматики разработать
программу лексического анализатора.
4. На основе разработанной контекстно-свободной грамматики
разработать программу грамматического разбора исходного
текста на входном языке.
5. Во всех случаях предусмотреть сообщения пользователю о
лексических и синтаксических ошибках.
6. Разработать и описать объектный псевдокод.
7. Составить и утвердить техническое задание на программу генерации.
8. Разработать программу генерации объектного псевдокода.
9. Составить отчёт по работе с описанием всех пунктов задания,
представить работающую программу.
3. Варианты заданий.
Вариант задания состоит из трёх цифр. Каждая цифра означает соответствующую строку таблицах 1, 2 и 3. В соответствии с этим, оператор присвоения может содержать указанные математические функции из указанных строк таблиц.
Таблица 1.
№ | Функция |
1 | acos |
2 | asin |
3 | atan |
4 | sin |
5 | cos |
6 | sinh |
7 | cosh |
Таблица 2.
№ | Функции |
1 | exp |
2 | abs |
3 | mod |
4 | sqrt |
5 | log |
6 | ln |
7 | log10 |
Таблица 3.
№ | Функции |
1 | tan |
2 | tanh |
3 | cotan |
4 | cotanh |
5 | trunk |
6 | round |
7 | nearbyint |
Подробные сведения о перечисленных функциях можно найти в справочнике программиста по С/C++.
4. Методические указания.
В любом языке программирования обязательно существуют ограничения. Поэтому следует сразу оговорить, что переменые обозначаются идентификаторами, начинающимися с латинской буквы и несодержащими разделителей. Следует оговорить максимально допустимую длину для идентификатора. Следует оговорить приоритет в выполнении арифметических операций, который должен совпадать с общепринятым.
Лексический анализ, грамматический разбор и генерация псевдокода могут быть совмещены в одной программе, но методически их лучше реализовать по отдельности: вначале лексический анализ, затем грамматический разбор и после этого, когда все ошибки будут устранены - генерация машинного кода.
Но в любом случае написание программы является творческим процессом и всё, что говорилось ранее, носит только рекомендательный характер.
5. Контрольные вопросы.
1. Каков приоритет в выполнении арифметических операций в
выражении?
2. Что такое лексема?
3. Каково назначение лексического анализа?
4. Каково назначение грамматического разбора?
5. Как определяется контекстно-свободная грамматика?
6. Что такое «чевёрки»?
7. Зачем используют псевдокод?
8. В чём особенность объектного кода?
9. Как из объектного кода получить исполняемый код?
Литература.
1. Бек Л. Введение в системное программирование. -М.: Мир, 1988.-448 с.
2. Компаниец Р.И., Маньков Е.В., Филатов Н.Е. Системное программи-
рование. Основы построения трансляторов.-СПб.: КОРОНА принт,
2000 .-256 с.
3. Шильд Г. Справочник программиста по С/С++.-М.: Издательский дом
«Вильямс», 2000.-448 с.
Построение детерминированного синтаксического
анализатора.
методические указания к выполнению лабораторной
работы по курсу «Теория вычислительных процессов
структур» для студентов специальности ПВС
Составил доцент кафедры ПВС
Сайкин А.И.
Саратов, 2001 г.
... процессом init (процесс, идентификатор которого pid = 1, становится их новым родителем). Порядок выполнения работы 1. Изучить теоретическую часть лабораторной работы. 2. Организовать функционирование процессов следующей структуры: 2.1. Отец формирует нумерованные сообщения вида: N pid time (N –текущий номер сообщения, pid – pid процесса, time – время записи в формате мм.сс (минуты. ...
... работы со справочной системой работа практикума приостанавливается. 3. Организационно-экономическое обоснование проекта В ходе дипломного проекта был разработан компьютерный лабораторный практикум по курсу «Теория оптимизации и численные методы». В данном разделе рассмотрена экономическая сторона проекта. Рассмотрены следующие вопросы: 1) сетевая модель 2) расчёт ...
... концентрических окружностей с уменьшающимся радиусом по мере затухания колебаний скорости и момента. Аналогичная картина наблюдается при ступенчатом набросе нагрузки. 5. РАЗРАБОТКА ВИРТУАЛЬНОЙ ЛАБОРАТОРНОЙ РАБОТЫ НА БАЗЕ ВИРТУАЛЬНОЙ АСИНХРОННОЙ МАШИНЫ Иную возможность анализа АД представляет специализированный раздел по электротехнике Toolbox Power System Block. В его библиотеке имеются блоки ...
... гистерезисная диаграмма поляризации сегнетоэлектрика. Подобрать масштаб по вертикальной оси осциллографа так, чтобы изображение занимало весь экран. Внимание: в процессе выполнения последующих пунктов лабораторной работы не допускается изменять положение масштабного переключателя осциллографа. Измерить и записать в табл. 6.2 координаты вершины гистерезисного цикла: xm, ym (координаты вершины ...
0 комментариев