сист пр об ч 3 (Лекции по СПО), страница 5
Описание файла
Файл "сист пр об ч 3" внутри архива находится в следующих папках: Лекции по СПО, сис пр об. Документ из архива "Лекции по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "операционные системы" в общих файлах.
Онлайн просмотр документа "сист пр об ч 3"
Текст 5 страницы из документа "сист пр об ч 3"
Фаза интерпретации — обычно набор программ, которые вызываются каждый раз, когда при синтаксическом анализе выявляется та или иная конструкция языка. Назначение этих программ (называемых программами интерпретации) состоит в создании промежуточной формы исходной программы и в добавлении определенной информации в таблицу идентификаторов.
Отделение синтаксической фазы от фазы интерпретации является чисто логическим. Первая из них распознает синтаксические конструкции (т. е. фразы, имеющие определенный смысл, например операторы или предложения), в то время как вторая интерпретирует точный смысл содержимого матрицы или таблицы идентификаторов. В действительности очень трудно определить, где кончается процесс распознавания синтаксической конструкции и начинается интерпретация ее смыслового значения. Другими словами, размер фразы, которой необходимо придать значение, может быть произвольным.
Это хорошо может быть проиллюстрировано на примере разбора арифметических выражений. В качестве отдельной синтак-
сической единицы можно рассматривать все выражение целиком. Однако его распознавание и грамматический разбор являются сложной задачей как для синтаксического анализа, так и для программ интерпретации. В то же время любое подвыражение (например, два операнда и операция) также может рассматриваться как отдельная синтаксическая единица, а значит, и распознаваться при выполнении фазы синтаксического анализа. В первом случае программа интерпретации должна создавать элементы матрицы для всего выражения, а во втором случае программы интерпретации будут создавать только один элемент для каждого подвыражения. Выбор может определяться сравнением объема вычислений на синтаксической фазе и в программах интерпретации.
В примерах данного раздела при грамматическом разборе различных операторов языка функции редукций и программ интерпретации будут представляться раздельно. Делая так, мы хотим проиллюстрировать разнообразие подходов при решении нашей задачи. В любом случае разработчик компилятора попытается эффективно разделить свою работу, причем так, чтобы результаты каждой фазы были бы наименее сложными. К синтаксическому анализу он отнесет задачу распознавания конструкций языка, а к фазе интерпретации — более специфическую задачу грамматического разбора, результаты которого непосредственно отражаются в матрице или в таблице идентификаторов.
8.2.3.1. Базы данных
Таблица стандартных символов
Стек — содержит единицы языка, появляющиеся при выполнении фаз синтаксического анализа и интерпретации. Таблица идентификаторов — инициируется лексическим анализом с целью полного описания всех идентификаторов, имеющихся в исходной программе. Лексическая фаза помещает идентификатор (или указатель на соответствующую строку символов) в поле имени. Фаза интерпретации добавляет все остальные атрибуты. Фаза распределения памяти помещает адрес. Эта информация используется в более поздних фазах при распределении памяти и при генерации кода, обеспечивающего доступ к памяти, соответствующей данному элементу таблицы. Большинство атрибутов определяется во время разбора оператора-декларации. Ниже представлен отдельный элемент таблицы идентификаторов:
Имя| Основание| Формат| Точность| Тип памяти| Границы массива|
Положение в структуре| Литеральное значение| Положение в блоке |
| | Адрес
Другие
Матрица — первая промежуточная форма исходной программы. Существуют две причины, по которым имеет смысл заводить такую матрицу: 1) первые четыре фазы компилятора могут быть сделаны машинно-независимыми; 2) это позволяет проводить машинно-независимую оптимизацию программы перед фазой генерации кода. Простая форма отдельного элемента матрицы предусматривает три поля, первое из которых содержит стандартный символ, представляющий либо терминальный символ, либо знак операции, остальные два элемента содержат стандартные символы аргументов. Фаза генерации кода использует эту матрицу, производя соответствующий объектный код.
Могут существовать также дополнительные поля, предназначенные для связи в цепочку отдельных элементов матрицы, что может использоваться для целей оптимизации при добавлении или вычеркивании элементов.
Стандартный Стандартный Стандартный, Соединение
с имвол символ символ в цепочку
Операция Операнд 1 Операнд 2.
Хотя все элементы в матрице являются стандартными симво- лами, для ясности в наших примерах мы будем показывать каждый символ в его первоначальном виде. Некоторые операции в матрице не имеют прямых аналогов как в исходном, так и в машинном языке. Например, составной оператор IF ТНЕN ... ... ЕLSЕ может транслироваться в несколько элементов матрицы, каждый из которых в свою очередь транслируется в несколько машинных команд.
Операнды матрицы являются стандартными символами типа
IDN, LIT или ТRМ, четвертой формой является МТХ. Стандартный символ
I МТХ I n I
обозначает результат выполнения операции n-го элемента матрицы и указывает на соответствующий элемент в области временной памяти строки таблицы идентификаторов.
Таблица временной памяти (может использоваться как часть таблицы идентификаторов). Фаза интерпретации вносит в таблицу временной памяти всю информацию о значениях МТХ-символов, т. е. атрибуты временных вычислений, полученных из строк матрицы, таких, как тип данных, точность, оператор исходной программы, в котором он используется, и т. д. Эта информация нужна при распределении памяти и генерации кодов