Если сканируемый символ - унарный оператор, то он приме-

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

3. Если сканируемый символ - унарный оператор, то он приме-

няется к верхнему символу стека и затем замещает его результатом

(правило <операнд>::= <операнд><оператор> [ Д/З - стр.282 ]

Включение в польскую запись других операторов

1) Присваивание <пер.>::= <выр.> ( <=><пер.><выр.>:= )

прим.: А := В * С + D <=> АВС * D + :=

- После выполнения оператора := из стека исключаются <пер.> и

<выр.>, т.к. этот оператор не имеет результирующего значения в

отличие от бинарных арифметических операторов.

- Кроме того, в стеке находится не значение <пер.> (оно нам

не нужно), а ее адрес, т.к. в рез-те присвоения по нему заносит-

ся значение <выр.>

2) Оператор GOTO А <=> A BRL,

где метка А представлена адресом соответствующего ей эл-та

таблицы символов. Оператор BRL (Branch to label)

3) Условные переходы

<операнд1><операнд2> BP, где первый операнд является значе-

нием арифметического выражения, второй указывает номер (место)

символа в цепочке польской записи. Если операнд1 положителен

(positive), то в качестве следующего берется символ, на который

указывает операнд2, иначе работа продолжается как обычно.

BP - переход по положительному значению, ВМ - по минусу, BZ

- по нулю, BPZ - по неотрицательному значению, и т.д.

4) Условная инструкция

IF<выр>THEN<инстр.1>ELSE<инстр.2><=><выр><С1>BZ<инср.1><С2>BR<инстр.2>

С1 - номер имвола, с которого начинается <инстр.2>.

С2 - номер символа,следующего за <инстр.2>.

Операторы BZ и BR не порождают результирующего значения.

Часть их работы состоит в исключении из стека двух верхних эле-

ментов (значения <выр> и <С1>) для BZ и соответственно одного

<С2> для BR. Оператор безусловного перехода <С2>BR - использует-

ся метка <С2> для внутренних генерируемых переходов. В то время

как оператор <метка> BRL в качестве значения <метка> использует

адрес эл-та таблицы символов.

5) Описание массива. ARRAY A[Li:Ui,...,Ln:Un]

можно представить в виде:

LiUi...LnUn A ADEC, где ADEC - оператор, имеющий переменное

число операндов, зависящее от числа индексов. Операнд А - оче-

видно, адрес элемента таблицы символов для А -> При вычислении

ADEC, следовательно, из этого элемента таблицы извлекается ин-

формация о размерности массива А (т.е. и о числе операндов ADEC)

- с этой целью изменен порядок записи операндов.

6) Переменная с индексами A[<выр.i>,...,<выр.n>] преставляется

в виде <выр.1>...<выр.2> A SUBS

Оператор SUBS используя элемент А таблицы символов и ин-

дексные выражения, вычисляет адрес элемента массива. Затем опе-

ранды исключаются из стека и на их место заносится новый опе-

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

Использование для индексирования специального оператора

SUBS - более удобный способ для польской записи.

Пример: BEGIN INTEGER K; ARRAY[1:I-j]; K:=0;

L:IF I>j THEN K:=K+A[I-j]*6 ELSE

BEGIN I:=I+1;I:=I+1;COTOL END

END

(1) BLOCK 1 IJ - A ADEC K0 := Польская запись

 (11) IJ - 29 BMZ

(16) K KIJ - A SUBS 6*+:= 41 BR Для каждого символа отво-

(29) II1 + := II1 + := L BRL дится одна строка (место)

(41) BLCEND

Как видно, описание INTEGER K (не требующее генерации ко-

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

формирования элемента таблицы символов для К.

Введены два оператора без операндов BLOCK (начало блока) и

BLCKEND (конец блока).

N содерж. N содерж. таблица

слова слова  символ слова слова символ символов

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

│ 1 │ 11 │ │ BLOCK │ 36 │ 6 │ │ SUBS │ 1 │ I │

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

│ 2 │ 1 │ 1 │ 1 │ 37 │ 1 │ 6 │ 6 │ 2 │ Y │

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

│ 4 │ 2 │ 1 │ I │ 39 │ 15 │ │ * │ 3 │ A │

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

│ 6 │ 2 │ 2 │ Y │ 40 │ 14 │ │ + │ 4 │ K │

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

│ 8 │ 16 │ │ - │ 41 │ 7 │ │ := │ 5 │ L25 │

├────┼────┼────┼───────┼────┼────┼────┼────────┼───┴─────┘

│ 9 │ 2 │ 3 │ A │ 42 │ 1 │ 64 │ 64 │

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

│ 11 │ 13 │ │ ADEC │ 44 │ 9 │ │ BR │

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

│ 12 │ 2 │ 4 │ K │ 45 │ 2 │ 1 │ I │

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

│ 14 │ 1 │ 0 │ 0 │ 47 │ 2 │ 1 │ I │

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

│ 16 │ 7 │ │ := │ 49 │ 1 │ 1 │ 1 │

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

│ 17 │ 2 │ 1 │ I │ 51 │ 14 │ │ + │

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

│ 19 │ 2 │ 2 │ Y │ 52 │ 7 │ │ := │

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

│ 21 │ 16 │ │ - │ 53 │ 2 │ 1 │ I │

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

│ 22 │ 1 │ 45 │ 45 │ 55 │ 2 │ 1 │ I │

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

│ 24 │ 8 │ │ BMZ │ 57 │ 1 │ 1 │ 1 │

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

│ 25 │ 2 │ 4 │ K │ 59 │ 14 │ │ + │

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

│ 27 │ 2 │ 4 │ K │ 60 │ 7 │ │ := │

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

│ 29 │ 2 │ 1 │ I │ 61 │ 1 │ 5 │ 5 │

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

│ 31 │ 2 │ 2 │ 7 │ 63 │ 10 │ │ BRL │

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

│ 33 │ 16 │ │ - │ 64 │ 12 │ │ BLCEND │

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

│ 34 │ 2 │ 3 │ A │ │ │ │ │

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

Внутреннее представление польской записи

- операторы занимают по одной ячейке и представлены числами:

6 = SUBS, 7 = :=, 8 = BMZ, 9 = BR, 10 = BRL, 11 = BLOCK,

12 = BLCKEND, 13 = ADEC, 14 = +, 15 = *, 16 = -.

Константа занимает два слова: первое 1, второе - значение

ее. Для идентификатора аналогично: первое слово 2, второе - ад-

рес (индекс) элемента таблицы символов идентификатора.

Метки, генерируемые для внутренних переходов равны соот-

ветств. номерам ячеек.

ТЕТРАДЫ.

1) Арифметические выражения:

(<оператор>,<операнд1>,<операнд2>,<результат>)

т.о. 1. А * В => *,А,В,Т, где Т некоторая переменная, кото-

рой присваивает результат вычисления А * В.


Информация о работе «Проектирование трансляторов»
Раздел: Информатика, программирование
Количество знаков с пробелами: 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 комментариев


Наверх