Upload
harlan
View
72
Download
4
Embed Size (px)
DESCRIPTION
Vnútorné formy -vnútorné jazyky. Motív. Zložitosť procesu prekladu Flexibilita Efektívnosť. Sémantická reprezentácia. Zápisu programu vo vnútornom jazyku hovoríme i sémantická reprezentácia Vyjadrujeme v ňom už „ČO“ a „AKO“ sa bude robiť Vyjadrujeme už následnosť vykonávania operácií. - PowerPoint PPT Presentation
Citation preview
Vnútorné formy-vnútorné jazyky
Motív
Zložitosť procesu prekladu Flexibilita Efektívnosť
Sémantická reprezentácia
Zápisu programu vo vnútornom jazyku hovoríme i sémantická reprezentácia
Vyjadrujeme v ňom už „ČO“ a „AKO“ sa bude robiť
Vyjadrujeme už následnosť vykonávania operácií
Požiadavky na vnútorný jazyk
Jednoduchší preklad „DO“ Jednoduchší preklad „Z“ Jednoduchšie operovanie „NAD“
daným jazykom
Flexibilita a efektívnosť
Vnútorné jazyky umžňujú flexibilnejšie a efektívnejšie využívať spoločné časti prostredia pre tvorbu prekladačov
Ak máme n zdrojových jazykov a m cieľových jazykov, využíva sa nasledujúca schéma
Prostredie pre viac zdrojových a cieľových jazykov
ZJ1
VJSémanitcká reprezentácia
CJ1
ZJ2
ZJn
CJ2
CJm
Najčastejšie vnútorné jazyky
Prefix / postfix Tetrády / triady Strom
Prefix / postfix
Operátory sú– Pred operandami – prefix– Za operandami – postfix
Vo vzťahu ku klasickému infixu
Operandy sú v rovnakom poradí Operátoty – v poradí, ako sa majú
vykonávať
Aritmetický výraz - Príklad
Infixový zápis Postfixový zápis
a + b a b +
(a + b) * (c – d / f) a b + c d f / - *
a + b * c a b c * +
sin(a) a sin
a := sin(a – b) + a * b / c a a b – sin a b * c /+ :=
Deklarácia poľa, Indexovaná premennáInfixový zápis Postfixový zápis
A[d1:h1, …, dn:hn] A, d1, h1, …, dn,hn, DCLA
A[i1, i2, …, in] A, i1, i2, …, in, SUBS
Riadiace konštrukcie
Skok
Infixový zápis Postfixový zápis
Skok Nepodmienený
GOTO L L JU
Jump Unconditional
Sko Podmienený
if b then GOTO L b L JIFT Jump if True
b L JIFF Jump if False
Podmienený príkaz
Infixový zápis Postfixový zápis
If b then P1 else P2 b L2 JIFF P1 Lza JU P2
L2 – návestie príkazu P2
Lza – návestie príkazu bezprostredne za daným podmieneným príkazom
Návestia L2 a Lza generuje prekladač
Príkaz cyklu while (test „pred“)
Infixový zápis Postfixový zápis
while B do P B Lza JIFF P Lpc JU
Lpc – návestie vlastného príkazu cyklu
Lza – návestie príkazu bezprostredne za daným príkazom cyklu
Návestia Lpc a Lza generuje prekladač
Príkaz cyklu repeat (test „za“)
Infixový zápis Postfixový zápis
repeat P until B P B Lpc JIFF
Lpc – návestie vlastného príkazu cyklu
Návestie Lpc generuje prekladač
Príkazy nad zásobníkom prekladača
TA adr - uloží adresu adr na vrch zásobníka
TC k - uloží konštantu k na vrch zásobníka
TL L - uloží návestie L na vrch zásobníka
ST - uloží hodnotu na vrchu zásobníka na adresu, ktorá
je pod vrchom zásobníka
DR - uloží hodnotu z adresy na vrchu zásobníka do
zásobníka (na vrch)
Ďalšie operátory
BLOCKBEG – začiatok bloku
BLOCKEND – koniec bloku
Aritmetické, logické a relačné operátory budú jasné z kontextu
Strom
Využívajú sa vlastnosti stromu ako dátovej štruktúry
Hovoríme o abstraktnom syntaktickom strome (AST)
Ide o vrcholovo ohodnotený strom– Vnútorné vrchly sú ohodnotené
operátormi– Koncové operandami
Aritmetický výraz
+
a b
a+b
a := sin(a – b) + a * b / c
a a b – sin a b * c / +:=
:=
/
* c
a b
+
sin
-
a b
Podmienený príkaz
Infixový zápis Postfixový zápis
If b then P1 else P2 If_príkaz
b P1 P2
Bloky b, P1 a P2 treba rovnakým spôsobom „rozviesť“
OK