Kokoonpanoperiaate (4. painos)

Johdanto

Kirjassa esitellään systemaattisesti kääntäjän yleiset rakentamisperiaatteet, suunnittelun perusmenetelmät ja tärkeimmät toteutustekniikat. Sisältö sisältää: kieliopin ja kielen perustiedot, leksikaalisten analyysiohjelmien suunnitteluperiaatteet ja rakennusmenetelmät, erilaiset kielioppianalyysitekniikat, kielioppiohjattu käännöstekniikka ja välikoodin generointi, symbolitaulukon organisointi ja hallinta, koodin optimointi, ajonaikaisen tallennustilan organisointi Perustiedot hallinnan tuntemus, objektikoodin generointi, rinnakkaiskäännöstekniikka jne.

Kirjaluettelo

Luku 1 Kokoelman yleiskatsaus

1.1 Kääntäjä ja kääntäjä

1.2 Kääntäjäprosessi ja kääntäjän perusrakenne

1.3 Kääntäjän generointimenetelmä

1.4 Käännöstekniikan soveltaminen ohjelmistokehitykseen

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 1

Harjoitus 1

Luku 2 Kieliopin ja kielen perustiedot

2.1 Yleiskatsaus

2.2 Aakkosten ja merkkijonojen peruskäsitteet

2.2.1 Aakkoset ja symbolijono

2.2.2 Symbolijonon toiminta

2.3 Kielioppi ja kieli Muodollinen määritelmä

2.3.1 Muodollinen kieli

2.3.2 Kieliopin muodollinen määritelmä

2.3.3 Kielen muodollinen määritelmä

2.3 .4 Normatiivinen johtaminen ja normatiivinen pelkistys

2.3.5 Rekursiiviset säännöt ja kieliopin rekursiivisuus

2.4 Lauseet, suorat lauseet ja kahva

2.4.1 Lauseet Ja suorat lauseet

2.4.2 Kahva

2.5 Epäselvyys syntaksipuun ja kieliopin välillä

2.5.1 Johdannainen ja syntaksipuu

2.5.2 Kieliopin epäselvyys

2.5.3 Kieliopin epäselvyyden poistaminen

2.6 Kieliopin ja kielen luokittelu

2.7 Kieliopin käytännöllisyys Rajoitukset ja muunnokset

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 2

Harjoitus 2

Luku 3 Leksinen analyysi ja äärelliset automaatit

3.1 Leksisen analyysiohjelman toiminta

3.2 Sanasymbolit ja sanamuodot

3.2.1 Sanat kielisymboleissa

3.2.2 Leksikaalisen analyysiohjelman tulossanojen muoto

3.3 Kaksi kielen sanasymbolien määritelmää

3.3.1 Normal form and normal set< /p>

3.3.2 Normaali kielioppi ja normaalimuoto

3.4 Normaalimuoto ja äärelliset automaatit

3.4.1 Määritetyt äärelliset automaatit (DFA)

3.4.2 Ei-deterministiset äärelliset automaatit (NFA)

3.4.3 NFA:n muodostaminen säännöllisestä lausekkeesta R

3.4.4 Method of determinizing NFA into DFA< /p>

3.4.5 DFA:n yksinkertaistaminen

3.4.6 Muunnos äärellisistä automaateista normaalimuotoon

3.5 Normaali kielioppi ja äärelliset automaatit

3.5.1 Muunnosmenetelmä oikeasta lineaarisesta normaalikieliopista äärellisiksi automaateiksi

3.5.2 Muunnosmenetelmä vasemmasta lineaarisesta normaalikieliopista äärellisiksi automaateiksi

3.5 .3 Muunnosmenetelmä äärellisestä automaatista säännölliseen kielioppiin

3.6 Menetelmä leksikaalisen analyysiohjelman kirjoittamiseen

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 3

Harjoitus 3

Luku 4 Syntaksianalyysi

4.1 Syntaksianalyysiohjelman toiminta

4.2 Ylhäältä ja alas -analyysimenetelmä

4.2.1 The idea of ​​non-deterministic top-down analysis method

4.2.2 Kieliopin vasemmanpuoleinen rekursio ja peruuttamisen eliminointi

4.2.3 Muutaman ei-LL(1)-kieliopin kirjoittaminen LL(1)-kieliopiksi

4.2.4 Rekursiivinen laskeutumisanalyysimenetelmä

4.2.5 Ennustava analyysimenetelmä ja ennakoiva analyysi Taulukon rakenne

4.3 Alhaalta ylös -analyysin yleiset periaatteet

4.4 Operaattorin prioriteettianalyysi

4.4.1 Menetelmän yleiskatsaus

< p>4.4.2 Definition of operator precedence grammar

4.4.3 Operaattorin ensisijaisuusrelaatiotaulukon rakentaminen

4.4.4 Operaattorin ensisijaisuusanalyysialgoritmin suunnittelu

< p>4.4.5 Construction of precedence function

4.4.6 Operaattorin ensisijaisuusanalyysin rajoitukset

4.5LR-analyysimenetelmä

4.5.1LR-analysaattori Toimintaperiaate ja prosessi

4.5.2LR(0)-analyysimenetelmä

4.5.3SLR(1)-analyysimenetelmä

4.5.4LR(1)-analyysimenetelmä

4.5.5LALR(1) jäsennysmenetelmä

4.5.6 LR-jäsennysmenetelmän soveltaminen moniselitteiseen kielioppiin

4.5.7 Virheen palautus LR-jäsennystekniikassa

4.6 Syntaksianalyysiohjelman kirjoitusmenetelmä

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 4

< p>Exercise 4

Luku 5 Kielioppiohjattu käännöstekniikka ja keskitason koodin luominen

5.1 Yleiskatsaus

5.2 Attribuuttien kielioppi

5.3 Kielioppi Ohjattu käännöskatsaus

5.4 Keskitason kieli

5.4.1 Käänteinen puolalainen tyyli

5.4.2 Kolmiosainen ja puuesitys

5.4.3 Kvaternaariset ja kolmiosoitekoodit

5.5 Alhaalta ylös syntaksiohjattu käännös

5.5.1 Yksinkertaisten aritmeettisten lausekkeiden ja osoituslausekkeiden kääntäminen

5.5.2 Boolen lausekkeiden kääntäminen

5.5.3 Valvontalausuntojen kääntäminen

5.5.4 Silmukkalausekkeiden kääntäminen

5.5.5 Lyhyt kuvauslausekkeet Käännös

5.5.6 Taulukkoelementtejä sisältävien osoituskäskyjen kääntäminen

5.5.7 Proseduuri- ja funktiokutsukäskyjen kääntäminen

5.6 Rekursiivisen laskeutumisen syntaksiohjattu käännös

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 5

Harjoitus 5

Luku 6 Symbolitaulukon järjestäminen ja hallinta

6.1 Symbolitaulukon rooli

6.2 Symbolitaulukon organisaatio

6.3 Symbolitaulukon muodostaminen ja haku

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 6

Harjoitus 6

Luku 7 Koodin optimointi

< p>7.1 Overview of optimization

7.2 Osittainen optimointi

7.2.1 Peruslohkojen jakomenetelmä

7.2.2 Peruslohkojen DAG-esitys

< p>7.2.3 Use DAG to optimize basic blocks

7.3 Silmukan optimointi

7.3.1 Ohjelman vuokaavio ja silmukka

7.3.2 Silmukkahaku

7.3.3 Silmukan optimointi

7.4 Näköaukon optimointi

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 7

Harjoitus 7

Luku 8 Tallennuksen organisointi ja hallinta ajon aikana

8.1 Yleiskatsaus

8.2 Static Storage Allocation< /p>

8.3 Pinottu tallennustilan varaus

8.3.1 Yksinkertainen pinottu tallennustilan varaus

8.3.2 Pinottu tallennustilan varaus sisäkkäiselle prosessille

8.4 Kasan varastointi

8.5 Tilapäisten muuttujien tallennusvaraus

Tämän luvun yhteenveto

Laajennettu lukeminen

Self-test exercise 8< /p>

Harjoitukset 8

Luku 9 Objektikoodin luominen

9.1 Yleiskatsaus

9.2 Hypoteettinen tietokonemalli

9.3 Yksinkertainen koodigeneraattori

9.3.1 Valmiustilan tiedot ja aktiiviset tiedot

9.3.2 Koodin luontialgoritmi

9.3.3 Rekisterin allokointi

9.4-koodigeneraattorin automaattinen generointitekniikka

Tämän luvun yhteenveto

Laajennettu lukeminen

Itsetestausharjoitus 9

Harjoitus 9

Luku 10 Perustiedot rinnakkaiskääntämistekniikasta

10.1 Rinnakkaiskääntämistekniikan käyttöönotto

10.2 Rinnakkaisen käännösjärjestelmän toiminta ja rakenne

10.2.1 Rinnakkaiskäännösjärjestelmän toiminta

10.2.2 Rinnakkaiskäännösjärjestelmän rakenne

10.3 Vektorikielen käännöstekniikka

10.3.1 Vektorisyntaksin käsittely

p>

10.3.2 Vektorirakenteen optimointi

10.4 Jaetun muistin rinnakkaiskoneen rinnakkaiskäännöstekniikka

10.4.1 esikokoelma

10.4.2 can be re Imported target code p>

Tämän luvun yhteenveto

Harjoitus 10

Liite A Lex-leksikaalinen analysaattorigeneraattori

A.1 Lex-leksikaalisen analysaattorin generaattorin esittely

p>

A.2Lex-syöttötiedostomuoto

A.3 Lex-sopimukset säännöllisille lausekkeille

A.4Lex-lähdeohjelman säännöt

A.5Flex-komentovaihtoehdot

A.6Lex-ohjelmaesimerkki

Liite B syntaksianalyysiohjelman generaattori YACC

B.1 Johdanto to the syntax analysis program YACC< /p>

B.2 YACC-tulotiedostomuoto

B.3 YACC kirjoitusmuoto

B.3.1 määritelmäosa

B.3.2 Säännöt-osio

B.3.3 Apuohjelmaosio

B.4YACC:n sisäänrakennettu nimi- ja määritelmämekanismi

B.5Flexin ja Bisonin yhdistetty käyttö

Liite C Kääntäjäkokeet

C.1 Leksinen analyysi

C.1.1 Kokeen tavoitteet

C.1.2 Kokeiluvaatimukset

C.1.3 Leksikaalisen analyysiohjelman algoritmiset ajatukset

C.1.4 Leksikaalisen analyysiohjelman C-kieliohjelmakehys

C.2 Syntaksianalyysi

C.2.1 Kokeen tarkoitus

C.2.2 Kokeiluvaatimukset

C.2.3 The algorithm idea of ​​the syntax analysis program

C.2.4 Syntaksianalyysiohjelman C-kielen ohjelmakehys

p>

C.3 Semanttinen analyysi

C.3.1 Kokeellinen tarkoitus

C.3.2 Kokeiluvaatimukset

C.3.3 Semanttisen analyysiohjelman Program Frameworkin C-kieli

C.4 Operaattorin prioriteettianalyysimenetelmä

C.5 Kokeellinen esimerkki

C.6 Muodollisen muodon muuntaminen automaattien graafiseksi esitykseksi

p>

C.6.1 Kokeellinen tarkoitus

C.6.2 Kokeiluvaatimukset

C.6.3 Suunnitteluideoita

C.6.4 Viitealgoritmi

Liite D itsetestitehtävät ja harjoitusten referenssivastaukset

Viitteet

Related Articles
TOP