Файл: Богданов В.С. Системы математического обеспечения цифровых вычислительных машин учеб. пособие.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.08.2024
Просмотров: 51
Скачиваний: 0
- н о -
принимает в качестве входной информации,закодированное і.^сд-
стаэление исходной информации на входном языке иг как выходную информацию выдает рабочую программу.
Процесс преобразования программы на входном языке сос тоит из следующих этапов:
1)распознавание в закодированном представлении исход ной программы различных составляющих входного языка,
2)анализ структуры программы,
3)установление .связи между используемыми идентификато рами и их описаниями,
4) преобразование арифметических выражений.
Все методы анализа структуры текста входного языка мож но разбить на две группы: прямые и синтаксические. Прямые ме
тоды основываются на понятии основного символа входного язы ка. В синтаксических методах трансляции синтаксической едини це программы соответствует прямо некоторая часть транслятора.
Прямые методы в свою очередь можно разоитъ на две боль- |
|||
щие группы. В первую входят трансляторы, |
порядок работы ко |
||
торых определяется |
парами ограничителей; |
во'вторую - транс |
|
ляторы, в которых |
выбор очередности той |
или. иной части текс- . |
|
та определяется с. помощью приписанного |
какдому ограничителю |
||
приоритета. |
|
|
|
Так называемый метод пар ограничителей основывается на |
использовании магазинной памяти, которая обладает свойством "последнее записанное - первое считаннее", Магазинная память используется как средство сохранения промежуточной информа ции до - момента, как будет закончен перевод. Зта храни мая информация является некоторым представлением основных
- x i i —
символов входного языка. Основное свойство магазинной памяти используется для анализа скобочной структуры программы. 3 слу чае АЛГОЛа это основное свойство— "последнее.записанное
первое считанное" - |
позволяет |
выделять из программы блоки или |
||
составные |
операторы, |
ограниченные операторными |
скобками ёедіп |
|
и en d . |
Магазин используется |
и для трансляции |
арифметичес |
ких выражений.
Процесс трансляции управляется так называемой' матрицей переходов; столбцы и строки этой матрицы переходов соответст вуют различным ограничителям АЛГОЛа., Элементы этой матрицы определяют соответствующие действия, которые должен выполнить транслятор.
Оонову других аналогичных трансляторов составляет таб лица "следующего оператора" в зависимости от текущего опера тора. Эта таблица используется для выбора соответствующего генератора (то есть некоторой программы, которая образует или "генерирует" нужные коды).
3 некоторых трансляторах с каждым ограничителем связа но некоторое число, называемое приоритетом. Действия транс лятора определяются путем сравнения приоритетов ограничите лей.
Итак, прямые методы трансляции базируются на введении понятия магазинной памяти и метода приоритетов.
Другуюгруппу составляют синтаксические методы. Они де лятся на две подгруппы. В одну входят трансляторы, состоящие из программ, соответствующих синтаксическим единицам, во вто рую - трансляторы, которые связывают переводимый текст с скн-
гаксйчссхиик |
единицами, |
кз которых |
он состоит, и |
обраба'....г.- |
ют представления стих единиц. |
|
|
||
С'СЦИКО |
ТОДКСЛЯТОр, |
ОТНОСЯЩИЙСЯ |
Б 1-й группе, |
СОСТОИТ 5і |
чпсгоаык, состветстчуьцн.. различным синтаксическим единицам,
і |
гл; сует магазин управления. |
|
|
|
|
Гои просмотре программы на входном языке |
текущий огра- |
||
-ччитедд V. ссс"оякие б верхушке используются |
для |
выбора |
эле |
|
мента |
‘'"аслкцы транслятора". Элемент этой таотщы |
определяет, |
||
к. саксу, из u '"программ следует ооратиться. |
|
|
|
|
|
Иногда в основу транслятора кладутся цепные |
списки, |
ко |
|
те one |
используются вместо магазина управления. В |
этом случае |
i-одно вносить поправки в текст на языке и получать соответст вующую минимальную программу в кодах без повторной полной трансляции. (Цепной список - это совокупность связанных яче-
памяти, в каждой из которых хранятся информация и адрес следующей ячейки списка).
Транслятор осуществляет перевод программы в три прохода_. Вс Бремя І - г с прохода осуществляется перевод б некоторую оес- ^косочную форму, записанную как цепной список вместе с табли цами идентификаторов и констант. Второй проход преобразует этот цепной список в машинные команды, праЕда, еше не привя занные к определенному месту в памяти. Третий проход преоб разует эта команды в программу, готовую для выполнения.
Далее рассматриваются некоторые основные принципы тран сляции арифметических выражений, которые, копію сказать, яв ляются основой языков, ориентированных па решение каучнс-те.ѵ- яг чески;: у"ач вычислительного характера.
и з -
s 6. Методы трансляции арифметических выражений
Существующие в настоящее время трансляторы моево разде
лять на три категории:
а) адгеораические трансляторы, предназначенные для тран сляции текстов, записанных на языках типа "автокод". Основ ная задача з таких трансляторах - транслирование разданных алгебраических выражений ;
б) операционные трансляторы для языка более сложной структуры, чем автокод. Сни состоят из ояда программ для об- -
работки выражений и опе.'а.озов различных типов. Трансляция,
как правило, осуществляв • я методом сборки;
в) системы интегралы-.ы. трансляции, использутие рекур
сивное определение структуры операторов и выражений языкое
типа AJiJTCЛ.
Наиболее ранние из описанных методыоазирсв=ились на
многократном просмотре арифметического выражения. При пер вом просмотре каждому из операндов, знаков операций и скосок присваивались некоторые номера уровней. Крайний левый элемент
имеет нуль-уровень, который увеличивается на единицу для каж
дой левов, скоски Сили операнда) и уменьшается на единицу для каждой правой скобки (или знака операции).
Послсдовя-’елъные просмотры и анализ |
их |
результатов |
по |
||
зволяют |
выделить ряд |
элементарных: операций, |
которые должны |
||
быть последовательно |
выполнены, к по ник |
сформулировать |
ко |
||
манды . |
приводятся пример кодировки |
аркіметкчесхогс |
вн- |
||
оачекиз |
г ггг-хдьтута |
последовательных просмотров его пгк |
|
- I R -
трансляции.
Выражение■{А , + (Аг+Аа)) - (А ,* А 2*А3) имеет кодировку
0 I 2 I 2 3 2 3 2 I 0 I 2 I 2 I 2 I 0 . Результат трансляции
Rf •’ = Az ~^А3 і
Ro • = А/ ~ R-f )
Я з : = А , х А г *Аз ; R : = R 2 - R 3 .
Критерием опознавания двухместной операции служит изменение
кода элемента выражения на I . Двухместная операция заключена между двумя элементами с одинаковыми кодами.
Подобный метод использовался в компиляторах с ФОРТРАНА. На первом месте производилась замена переменных о индексами на простые переменные, после этого вводились дополнительные скобки, которые делали явными обычные правила старшинства арифметических операторов. Затем полное выражение разделя лось на так называемые триплеты, содержащие информацию об операциях.
Анализируя и преобразуя эту информацию, машина и состав ляет рабочую программу. Ниже дается пример преобразования выражения, которое, последовательно преобразуется в сегмен ты - в триплеты, являющиеся, основой для формирования команд вычислительной машины.
Пример? (((а +в) - C )/((D * (Е + F )/g )
Это выражение разбивается на сегменты.
I . А +ß
г .$ А + 3 )-с )
з. ( E + F )
- II5 -
(- D * ( E i- F )/ p )
5. ((D ж( ( + F ) //J — H ~rJ
6■( ( / * £ > )- С / ( ( Э х (E + F )/g .
Из этих сегментов формируются триплеты, содержащие номер сег мента, знак операции и операнд.
Эти образования имеютвид:
( 1 + , а Ю , + , в) ]
(г, + 0(2, - с у
( з , +,Ф ( У + ,( ;
(4,х,і>)(4,х,3)(4,$);
( , +, 4)(5, Н)(5, +, с);
(& ,x ,2) ( 6y ,s ) .
При определении номера сегмента используется счетчик, который увеличивается в момент просмотра левой скобки. Трип леты преобразуется составляюсь, ..тематической программой.
Для ускорения трансляции и при построении интерпретирующих систем разработан ряд методов однократного или двукратного
просмотра |
арифметического выражения. |
I |
- . |
|
5 7. Методы однократного и двукратного |
|
просмотра |
Наиболее ранний метод разложения арифметического выра жения ка отдельные такты за один просмотр заключается в том, что там, где это возможно, арифметическая операция выполняет ся сразу де. Если встречается такой символ, как левая скоб ка, то промежуточный результат записывается в память к его модно использовать п о те оораостки подвыражения.
ГТ£ _
- ixü ~
Примет): Еырааекие
а + (3-с)/(/хо)+£
выполняется в такси последовательности
|
#<>■•= о; |
|
|
А , : ~Я г ~С ; |
|
|
— $> |
|
|
Аз •' ~ |
' |
|
Аз ■— Аз + £ > |
|
|
А г ' - = * г / А з \ |
|
і |
/? /; = |
-^/ + Rg . |
3 этой методе используется одна таблица для промеауточ- |
||
ных результатов |
и для команд перехода к подпрограммам. Под |
программы выполнения операций выбирается в зависимости от типа встретившихся элементов языка.
Зуаествувт трансляторы, алгоритм работы которых агиводмт к пострсениэ некоторой матрицы (.алгоритмической матрицы?. хаздал строка которой явится з действительности закодирован ной трехадресной командой .
Работу транслятора такого типа рассмотрим на примере трансляции выразенпя: '
( С / + D 1) * у г + 2 . 7 6 В + f l 2 + 7 2 ).* K i / z i .
Этому зырзнёниэ после просмотра соответствует матрица:
а |
G; г |
Сіі.,з |
а - |
1 |
|
12 |
|
I |
|
I |
|