Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.5.TRANSLATORDLAPROSTYCHWYRAŻEŃ
75
expr
expr+term
{print(!+!)}
|
expr-term
term
{print(!-!)}
|
term
|
|
0
1
lll
9
{print(!0!)}
{print(!1!)}
{print(!9!)}
RYSUNEK
2021:Akcjedlatłumaczeniananotacjępostfiksową
Wyglądanato,żemamykonflikt:zjednejstronypotrzebujemygramatyki,
któraumożliwitłumaczenie;zdrugiejpotrzebujemyzasadniczoodmiennejgra-
matyki,któraumożliwianalizęskładniową.Rozwiązaniemjestrozpoczęcieod
gramatykidlałatwegotłumaczeniaistaranneprzekształceniejejwtaką,która
umożliwiiułatwianalizę.Dziękiwyeliminowaniurekurencjilewostronnejzry-
sunku2.21możemyuzyskaćgramatykęnadającąsiędoużyciawpredykcyjnym
translatorzeopartymnazejściachrekurencyjnych.
2.5.1.Składniaabstrakcyjnaikonkretna
Użytecznympunktemstartowymprzyprojektowaniutranslatorajeststruktura
danychnazywanaabstrakcyjnymdrzewemskładniowym(albopoprostudrzewem
składniowym).Wtakimdrzewiedlapewnegowyrażeniakażdywewnętrznywęzeł
reprezentujeoperator;dziecitegowęzłareprezentująoperandytegooperatora.
Mówiącogólniej,dowolnakonstrukcjaprogramowamożezostaćobsłużonaprzez
utworzenieoperatoradlatejkonstrukcjiitraktowanieistotnychsemantycznie
komponentówtejkonstrukcjijakooperandów.
Wabstrakcyjnymdrzewieskładniowymdlawyrażenia
9-5+2
pokazanymna
rysunku2.22korzeńreprezentujeoperator+.Poddrzewakorzeniaodpowiadają
podwyrażeniom
9-5
oraz
2
.Zgrupowanie
9-5
jakooperanduodzwierciedla
przetwarzanieoperatorówotymsamympriorytecieodlewejdoprawej.Ponieważ
–i+majątensampriorytet,9-5+2jestrównoważne(9-5)+2.
+
-
9
5
2
RYSUNEK
2022:Drzewoskładniowedla9-5+2
Abstrakcyjnedrzewaskładniowe(lubpoprostudrzewaskładniowe)dopew-
negostopniaprzypominajądrzewarozbioru.Jednakwdrzewachskładniowych
wewnętrznewęzłyreprezentująkonstrukcjeprogramowe,podczasgdywdrzewie
rozbioruwęzłyteodpowiadająsymbolomnieterminalnym.Wielenieterminali
gramatykiwistocieodpowiadakonstrukcjomprogramowym,aleinnetylko