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 │
└────┴───┴─────┴──────┴────┴───────┘
_
... работы. В ходе работы над дипломным проектом разработан транслятор. Проблема создания такого транслятора является очень актуальной, т.к. многим пользователям САПР необходимо доступ к технической документацию, которую удобнее хранить на удаленных серверах в формате HTML. Поэтому степень положительного эффекта от выполнения дипломного проекта научно-исследовательского характера 1=6.5. В ...
... направления, активно развиваемого сейчас в разных коллективах и странах. Отталкиваясь от трансформационной модели смешанных вычислений и от своих работ в области трансляции и оптимизации программ, Ершов определяет концепцию трансформационной машины. Трансформационная машина есть абстрактное вычислительное устройство, выполняющее программы в некотором "сверхязыке", действиями которого являются ...
... 166, 16 Mb RAM, Windows 95 Вывод В ходе разработки курсового проекта я ближе ознакомился с теорией МП- трансляторов, научился писать программы - конструкторы для построения МП – транслятора по его параметрам с последующей проверкой задаваемых цепочек, закрепил знания по системному программированию. Разрабатывая программу, я научился применять знания дискретной математике, что облегчает ...
... позволяет связывать твёрдотельные модели, сборки или чертежи, созданные с помощью SolidWorks 97, с файлами других приложений, что значительно расширяет возможности автоматизации процесса проектирования. С помощью технологии OLE можно использовать информацию, полученную в других приложениях Windows, для управления моделями и чертежами SolidWorks. Например, размеры модели могут быть рассчитаны в ...
0 комментариев