Лабораторная работа №2 проектирование лексического анализатора


Построение списка триад по дереву вывода



Download 443,5 Kb.
bet13/22
Sana01.07.2022
Hajmi443,5 Kb.
#727533
TuriЛабораторная работа
1   ...   9   10   11   12   13   14   15   16   ...   22

Построение списка триад по дереву вывода.


Триады являются универсальной, машинно-независимой формой внутреннего представления в компиляторе результирующей объектной программы, а потому не требуют оговорки дополнительных условий при генерации кода. Триады взаимосвязаны между собой, поэтому для установки корректной взаимосвязи процедура генерации кода должна получать также текущий номер i очередной триады.
Тогда четырем формам текущего узла дерева будут соответствовать последовательности триад объектного кода (табл. 6):
Таблица 6.
Преобразование типовых узлов дерева вывода в последовательность триад

Вид узла дерева

Результирующий код

Примечание



i) act (oper1,oper2)

act - тип триады
oper1,oper2 - операнды (листья дерева вывода)



i) Code(Узел 2,i)
i+j) act(oper1,^i+j-1)

Узел 2 - нижележащий узел дерева вывода
Code(Узел 2,i) - последовательность триад, порождаемая для Узла2, начиная с триады с номером i
j - количество триад, порождаемых для Узла2



i) Code(Узел 2,i)
i+j) act(^i+j-1,oper2)

Узел 2 - нижележащий узел дерева вывода
Code(Узел 2,i) - последовательность триад, порождаемая для Узла2, начиная с триады с номером i
j - количество триад, порождаемых для Узла2



i) Code(Узел 2,i)
i+j) Code(Узел 3,i+j)
i+j+k) act(^i+j-1,^i+j+k-1)

Узел 2, Узел 3 - нижележащие узлы дерева вывода
Code(Узел 2,i) - последовательность триад, порождаемая для Узла2, начиная с триады с номером i
j - количество триад, порождаемых для Узла2
Code(Узел 3,i+j) - последовательность триад, порождаемая для Узла3, начиная с триады с номером i+j
k - количество триад, порождаемых для Узла3

Рассмотрим тот же пример дерева вывода для выражения A := B*C + D - B*10 на рис. 6 и соответствующую ему последовательность триад:


Рис. 6. Дерево вывода для арифметического выражения.
Шаг 1: 1)  Code(U2,1)
i)  :=(A,^i-1)
Шаг 2: 1)  Code(U3,1)
j)  Code(U5,j)
i-1)  -(^j-1,^i-2)
i)  :=(A,^i-1)
Шаг 3: 1)  Code(U4,1)
k)  +(^k-1,D)
j)  Code(U5,j)
i-1)  -(^j-1,^i-2)
i)  :=(A,^i-1)
Шаг 4: 1)  *(B,C)
2)  +(^1,D)
3)  Code(U5,3)
i-1)  -(^j-1,^i-2)
i)  :=(A,^i-1)
Шаг 5: 1)  *(B,C)
2)  +(^1,D)
3)  *(B,10)
4)  -(^2,^3)
5)  :=(A,^4)
Следует обратить внимание, что в данном алгоритме последовательные номера триад (а следовательно, и ссылки на них) устанавливаются не сразу. Это не имеет значение при рекурсивной организации процедуры, но при другом способе обхода дерева вывода в программе генерации кода лучше увязывать триады между собой именно по ссылке (указателю), а не по порядковому номеру.
Для триад разработаны универсальные (машинно-независимые) алгоритмы оптимизации кода. После их выполнения (оптимизации внутреннего представления) триады могут быть преобразованы в команды на языке ассемблера.

Download 443,5 Kb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   22




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish