Фаза - интерпретация - Большая Энциклопедия Нефти и Газа, статья, страница 2
При поносе важно, какая скорость у тебя, а не у твоего провайдера. Законы Мерфи (еще...)

Фаза - интерпретация

Cтраница 2


Эта память необходима только во время выполнения фазы интерпретации. Для выполнения объектной программы она не нужна.  [16]

Фазы компилятора не являются четко разделенными секциями, выполняемыми последовательно. Например, лексический анализ, синтаксический анализ и фаза интерпретации на самом деле тесно взаимосвязаны.  [17]

Редукции зависят от синтаксиса исходного языка и поэтому должны быть модифицированы в случае его изменения. Формат редукций совершенно произволен, но информация, содержащаяся в них, существенна. Позже мы увидим, что необходим компромисс между функциями синтаксической фазы и программами интерпретации фазы интерпретации. Из соображений эффективности синтаксические фазы многих компиляторов построены не на основе интерпретации, а в виде фиксированной программы. Если требуется обеспечить более высокую эффективность компилятора, можно прокомпилировать редукции. Мы видим, что редукции представляют собой систематический подход к реализации синтаксической фазы; если разработчик захочет, он сможет потом вручную оттранслировать редукции в единую программу.  [18]

Стек - содержит единицы языка, появляющиеся при выполнении фаз синтаксического анализа и интерпретации. Таблица идентификаторов - инициируется лексическим анализом с целью полного описания всех идентификаторов, имеющихся в исходной программе. Лексическая фаза помещает идентификатор ( или указатель на соответствующую строку символов) в поле имени. Фаза интерпретации добавляет все остальные атрибуты. Фаза распределения памяти помещает адрес. Эта информация используется, в более поздних фазах при распределении памяти и при генерации кода, обеспечивающего доступ к памяти, соответствующей данному элементу таблицы. Большинство атрибутов определяется во время разбора оператора-декларации.  [19]

В общем случае такое вычисление необходимо помещать в ту часть программы, которая непосредственно предшествует циклу. Для этого необходимо, просматривая матрицу, найти точку начала цикла. Поэтому фаза интерпретации должна специальным образом отмечать элементы матрицы, соответствующие началу каждого цикла. В каждом таком элементе должна быть также обратная ссылка, с помощью которой можно оптимизировать процесс выхода во внешний цикл.  [20]

Определим соответствующие программы интерпретации ( например, программу ENTER, которая задает границы массива, основание, точность) и напишем редукции. Заметим, что фаза интерпретации вносит информацию в таблицу идентификаторов в процессе обработки оператора декларации. Когда обрабатываются арифметические операторы, содержащие индексные переменные, фаза интерпретации должна завести в матрице элементы, которые позволят фазе генерации кода определить адреса.  [21]

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

Программа старшинство операций - наиболее сложная, поскольку она проводит грамматический разбор полного арифметического выражения. Она использует правила старшинства операций ( приведены в упражнениях 1 и 7 гл. Грамматический разбор заканчивается, когда встречается разделитель, и последняя строка матрицы и символ остаются на вершине стека. Программы имя пере-менной и старшинство операций являются хорошими примерами возможного разделения функций между фазами интерпретации и синтаксического анализа.  [23]

Определим соответствующие программы интерпретации ( например, программу ENTER, которая задает границы массива, основание, точность) и напишем редукции. Заметим, что фаза интерпретации вносит информацию в таблицу идентификаторов в процессе обработки оператора декларации. Когда обрабатываются арифметические операторы, содержащие индексные переменные, фаза интерпретации должна завести в матрице элементы, которые позволят фазе генерации кода определить адреса.  [24]

Лексическая фаза заполняет элементы в таблице имен. Когда фаза интерпретации в каком-либо блоке встречает оператор DECLARE, она заводит элементы в таблице идентификаторов. Каждый элемент снабжается указателем имени идентификатора в таблице имен и индикатором блока, в котором этот идентификатор описан. Кроме того ставятся индекс элемента таблицы идентификаторов, в котором эта переменная переопределяется другим блоком. Таким образом, любую ссылку к переменной внутри блока фаза интерпретации должна заменить стандартным символом. Она находит правильный элемент в таблице идентификаторов, просматривая в этой таблице все вхождения переменной, используя информацию - о блочной структуре и индекс следующего переопределения.  [25]



Страницы:      1    2