Возможные параметры описания переменных и процедур

Проектирование трансляторов
Семестр: Отладка разработанного ПО и оформление протоко- В строке ...SiSj... символы Si и Sj входят в одну и ту В множество L(U) самых левых символов нетерминального Пусть между некоторыми двумя символами Si и Sj сущес- I i 1 Не предусмотрен выход при выполнении условия R > R , так как Потом повторяется п. 5 Если выполнение шага 4 пpиведет к тому, что значения всех Перевод инфиксной записи в польскую. Всякий раз, когда в Когда редуцируется основа XY..Z, тетрады для всех нетер- Опреанды и операторы Если сканируемый символ - унарный оператор, то он приме- А * В + С * D => *, A, B, T1 ┐ тетрады располагаются в Устраняет недостатки программы,вызванные небрежностью или Проверяется непртиворечивость типов получателя и ис- ДИСПЛЕЙ Выделение памяти под рамку в процессе трансляции ОРГАНИЗАЦИЯ ПАМЯТИ ВО ВРЕМЯ ТРАНСЛЯЦИИ Алгоритм Биледи Возможные параметры описания переменных и процедур
319724
знака
0
таблиц
0
изображений

4.2 Возможные параметры описания переменных и процедур

в таблице символов

Для переменных и процедур в описателе может потребоваться

следующая информация:

ПЕРЕМЕННАЯ:

Тип (вещ., целый, строка, комплексный, метка и т.д.);

Точность, масштаб, длина;

Вид (простая переменная, массив, структура и т.д.);

Адрес во время выполнения программы;

Если массив, то - число измерений. Если есть граничные пары

(ограниченные множества в Паскале), то их значения;

Если структура или компонента структуры, то связь данной

компоненты с другими компонентами;

Формальный параметр или нет; если да, то тип соответствия

параметров;

Описана ли переменная как extern или как идентификатор объе-

динения (union) ?

Обрабатывалось ли уже ее описание ?

Существует ли инструкция, присваивающая ей значение ?

ПРОЦЕДУРА:

 Является ли она внешней по отношению к программе ?

Является ли она функцией ?

Каков ее тип ?

Обрабатывалось ли уже ее описание ?

Является ли она рекурсивной ?

Каковы ее формальные параметры ? Их описатели должны быть

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

соответствие фактическим параметрам.

4.3 Таблица символов компилятора /360 WATFOR

/360 WATFOR - однопроходной компилятор с языка ФОРТРАН IV

для машин IBM/360.

ТС состоит из пяти разных списков:

- списка меток;

- списка арифметических констант;

- списка имен общих блоков, подпрограмм, переменных;

- списка блоков;

- списка подпрограмм.

(Таким образом, некоторые элементы оказываются в двух списках.)

Элементы всех списков помещаются в одной и той же таблице;

первые 2 байта каждого элемента используются для ссылки на сле-

дующий элемент в этом же списке. Следовательно, поиск отдельного

элемента сводится к линейному просмотру по ссылкам.

Элементы различных типов имеют разлмчную длину в пределах от

8 до 20 байтов.

Например, элемент для переменной имеют длину 16 байтов и со-

держит следующую информацию (первые 2 байта опущены):

3-4 5-10 11-12 13-14 15-16

┌────┬───────┬───────────┬──────┬───────────┐

│ B2 │идент-р│размерность│COMMON│EQUIVALENCE│

└────┴───────┴───────────┴──────┴───────────┘

В полях "COMMON" и "EQUIVALENCE" помещаются указатели на

элементы других переменных, связанных с данной при помощи ин-

струкций COMMON и EQUIVALENCE.

В поле "размерность" содержится 0, если переменная не яв-

ляется массивом; в противном случае оно указывает на отдельный

элемент, содержащий всю информацию о размерности: величины

d1,...,dn и длину d1*...*dn.

Два байта, обозначенные B2, содержат всю остальную информа-

цию (см. рис. 20.10). Первоначально все поля содержат нули, и в

них заносится информация по мере обработки программы.

Единица в каждом однобитовом поле на рис. 20.10 говорит о

наличии соответствующего факта.

│ 0-1 │ 2-4 │ 5-6 │ 7 │ 8 │ 9 │

├───────────┼────────┼──────────┼────────┼───────┼─────────┤

│10 - прос- │число │ тип │ длина │ тип │исполь- │

│ тая │индексов│00 - лог. │задается│сформи-│зование │

│ перем.│в случае│01 - цел. │програм-│рован │сформиро-│

│11 - массив│массива │10 - вещ. │мистом │ │вано │

│ │ │11 - ком- │ │ │ │

│ │ │ плекс. │ │ │ │

│ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │

├─────────┼────────┼─────────┼────────┼────────┼───────────┤

│формаль- │текущий │присваи- │имеет │встреча-│встреча- │

│ный пара-│параметр│вается │нач. │ется в │ется в │

│метр │цикла │значение │значение│COMMON │EQUIVALENCE│

│програм- │ │по ASSIGN│ │ │ │

│мы │ │ │ │ │ │

Рис. 20.10 Схема подполей поля B2

4.4 Представление структур в таблице символов

Мы можем представлять структуру, отводя по одному элементу

для каждой компоненты. Кроме обычных полей, каждый элемент имеет

три дополнительных поля: FATHER, SON и BROTHER.

Поле FATHER указывает на ОТЦА, SON - на первого СЫНА компо-

ненты, а поле BROTHER - на ее следующего БРАТА в последова-

тельности братьев группы.

Если данный элемент не имеет отца, сына или следующего бра-

та, то соответствующее поле будет содержать 0.

 Ниже на рис. 20.11 приведены иерархические схемы строения

двух структур с указанием перед идентификатором каждой из

(под)компонент уровня ее вложенности.

1 A 1 L

2 B 2 M

3 C 4 C

3 D 4 D

2 E 2 B

2 F 5 C

5 D

Рис. 20.11 Схема построения двух структур

Элементы ТС для этих двух структур приведены ниже на Табли-

це 20.1. Этой информации может хватить с избытком (а может ока-

заться и недостаточно) для эффективной работы со структурами.

Поскольку могут существовать элементы, имена которых совпа-

дают, вводится еще один указатель SAME, связывающий такие элемен-

ты между собой. Первый из этих элементов содержит в этом поле 0.

Таблица 20.1 Схема заполнения элементов ТС для двух струк-

тур на рис. 20.11

┌────┬───┬─────┬──────┬────┬───────┐

│ │ID │ SAME│FATHER│ SON│BROTHER│

├────┼───┼─────┼──────┼────┼───────┤

│ A1 │ A │ 0 │ 0 │ B1 │ 0 │

│ B1 │ B │ 0 │ A1 │ C1 │ E1 │

│ C1 │ C │ 0 │ B1 │ 0 │ D1 │

│ D1 │ D │ 0 │ B1 │ 0 │ 0 │

│ E1 │ E │ 0 │ A1 │ 0 │ F1 │

│ F1 │ F │ 0 │ A1 │ 0 │ 0 │

│ L1 │ L │ 0 │ 0 │ M1 │ 0 │

│ M1 │ M │ 0 │ L1 │ C2 │ B2 │

│ C2 │ C │ C1 │ M1 │ 0 │ D2 │

│ D2 │ D │ D1 │ M1 │ 0 │ 0 │

│ B2 │ B │ B1 │ L1 │ C3 │ 0 │

│ C3 │ C │ C2 │ B2 │ 0 │ D3 │

│ D3 │ D │ D2 │ B2 │ 0 │ 0 │

└────┴───┴─────┴──────┴────┴───────┘

_


Информация о работе «Проектирование трансляторов»
Раздел: Информатика, программирование
Количество знаков с пробелами: 319724
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
84334
30
0

... работы. В ходе работы над дипломным проектом разработан транслятор. Проблема создания такого транслятора является очень актуальной, т.к. многим пользователям САПР необходимо доступ к технической документацию, которую удобнее хранить на удаленных серверах в формате HTML. Поэтому степень положительного эффекта от выполнения дипломного проекта научно-исследовательского характера 1=6.5. В ...

Скачать
50249
0
1

... направления, активно развиваемого сейчас в разных коллективах и странах. Отталкиваясь от трансформационной модели смешанных вычислений и от своих работ в области трансляции и оптимизации программ, Ершов определяет концепцию трансформационной машины. Трансформационная машина есть абстрактное вычислительное устройство, выполняющее программы в некотором "сверхязыке", действиями которого являются ...

Скачать
36295
1
7

... 166, 16 Mb RAM, Windows 95 Вывод   В ходе разработки курсового проекта я ближе ознакомился с теорией МП- трансляторов, научился писать программы - конструкторы для построения МП – транслятора по его параметрам с последующей проверкой задаваемых цепочек, закрепил знания по системному программированию. Разрабатывая программу, я научился применять знания дискретной математике, что облегчает ...

Скачать
141647
0
0

... позволяет связывать твёрдотельные модели, сборки или чертежи, созданные с помощью SolidWorks 97, с файлами других приложений, что значительно расширяет возможности автоматизации процесса проектирования. С помощью технологии OLE можно использовать информацию, полученную в других приложениях Windows, для управления моделями и чертежами SolidWorks. Например, размеры модели могут быть рассчитаны в ...

0 комментариев


Наверх