Princip kompilace (4. vydání)

Úvod

Kniha systematicky seznamuje s obecnými konstrukčními principy, základními metodami návrhu a hlavními implementačními technikami překladače. Obsah zahrnuje: základní znalosti gramatiky a jazyka, principy návrhu a metody konstrukce programů lexikální analýzy, různé technologie gramatické analýzy, technologii gramaticky řízeného překladu a střední generování kódu, organizaci a správu tabulky symbolů, optimalizaci kódu, organizaci úložného prostoru za běhu Základní znalost správy, generování objektového kódu, technologie paralelní kompilace atd.

Katalog knih

Kapitola 1 Přehled kompilace

1.1 Překladatel a kompilátor

1.2 Proces kompilátoru a základní struktura kompilátoru

1.3 Způsob generování překladače

1.4 Aplikace kompilační technologie při vývoji softwaru

Shrnutí této kapitoly

Rozšířené čtení

Cvičení autotestu 1

Cvičení 1

Kapitola 2 Základní znalost gramatiky a jazyka

2.1 Přehled

2.2 Základní pojmy abecedy a řetězce symbolů

2.2.1 Abeceda a řetězec symbolů

2.2.2 Operace se symbolovým řetězcem

2.3 Gramatika a jazyk Formální vymezení

2.3.1 Formální jazyk

2.3.2 Formální definice gramatiky

2.3.3 Formální definice jazyka

2.3 .4 Normativní derivace a normativní redukce

2.3.5 Rekurzivní pravidla a rekurzivita gramatiky

2.4 Fráze, přímé fráze a popisovač

2.4.1 Fráze A přímé fráze

2.4.2 Rukojeť

2.5 Nejednoznačnost mezi stromem syntaxe a gramatikou

2.5.1 Odvozovací a syntaktický strom

2.5.2 Nejednoznačnost gramatiky

2.5.3 Odstranění nejednoznačnosti gramatiky

2.6 Klasifikace gramatiky a jazyka

2.7 Praktičnost gramatiky Omezení a transformace

Shrnutí této kapitoly

Rozšířené čtení

Cvičení na autotest 2

Cvičení 2

Kapitola 3 Lexikální analýza a konečné automaty

3.1 Funkce programu Lexikální analýzy

3.2 Slovní symboly a výstupní tvary slov

3.2.1 Slova v jazykových symbolech

3.2.2 Forma výstupních slov programu lexikální analýzy

3.3 Dvě definice jazykových slovních symbolů

3.3.1 Normal form and normal set< /p>

3.3.2 Normální gramatika a normální forma

3.4 Normální tvar a konečné automaty

3.4.1 Určené konečné automaty (DFA)

3.4.2 Nedeterministické konečné automaty (NFA)

3.4.3 Konstrukce NFA z regulárního výrazu R

3.4.4 Method of determinizing NFA into DFA< /p>

3.4.5 Zjednodušení DFA

3.4.6 Převod z konečných automatů do normálního tvaru

3.5 Normální gramatika a konečné automaty

3.5.1 Metoda převodu z pravé lineární normální gramatiky na konečné automaty

3.5.2 Metoda převodu z levé lineární normální gramatiky na konečné automaty

3.5 .3 Metoda převodu z konečného automatu na regulární gramatiku

3.6 Metoda psaní programu lexikální analýzy

Shrnutí této kapitoly

Rozšířené čtení

Cvičení na autotest 3

Cvičení 3

Kapitola 4 Syntaktická analýza

4.1 Funkce programu syntaktické analýzy

4.2 Metoda analýzy shora a dolů

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

4.2.2 Levá rekurze gramatiky a eliminace backtrackingu

4.2.3 Přepsání některé ne-LL(1) gramatiky na LL(1) gramatiku

4.2.4 Metoda rekurzivní analýzy sestupu

4.2.5 Metoda prediktivní analýzy a prediktivní analýza Struktura tabulky

4.3 Obecné principy analýzy zdola nahoru

4.4 Analýza priorit operátora

4.4.1 Přehled metod

< p>4.4.2 Definition of operator precedence grammar

4.4.3 Konstrukce tabulky vztahů priorit operátorů

4.4.4 Návrh algoritmu analýzy priority operátorů

< p>4.4.5 Construction of precedence function

4.4.6 Omezení analýzy priority operátorů

Metoda analýzy 4.5LR

4.5.1LR analyzátor Princip činnosti a proces

4.5.2 LR(0) metoda analýzy

4.5.3 Metoda analýzy SLR(1).

4.5.4 Metoda analýzy LR(1).

4.5.5 Metoda analýzy LALR(1).

4.5.6 Aplikace metody LR parsování na nejednoznačnou gramatiku

4.5.7 Obnova chyb v technice analýzy LR

4.6 Způsob psaní programu pro analýzu syntaxe

Shrnutí této kapitoly

Rozšířené čtení

Samotestovací cvičení 4

< p>Exercise 4

Kapitola 5 Překladová technologie řízená gramatikou a středně pokročilé generování kódu

5.1 Přehled

5.2 Atribut Gramatika

5.3 Gramatika Přehled řízeného překladu

5.4 Středně pokročilý jazyk

5.4.1 Obrácený polský styl

5.4.2 Ternární a stromová reprezentace

5.4.3 Kvartérní a tříadresové kódy

5.5 Překlad řízený syntaxí zdola nahoru

5.5.1 Překlad jednoduchých aritmetických výrazů a přiřazovacích příkazů

5.5.2 Překlad booleovských výrazů

5.5.3 Překlad kontrolních výkazů

5.5.4 Překlad příkazů smyčky

5.5.5 Stručný popis prohlášení Překlad

5.5.6 Překlad příkazů přiřazení obsahujících prvky pole

5.5.7 Překlad příkazů volání procedur a funkcí

5.6 Překlad řízený syntaxí rekurzivního sestupu

Shrnutí této kapitoly

Rozšířené čtení

Samotestovací cvičení 5

Cvičení 5

Kapitola 6 Organizace a správa tabulky symbolů

6.1 Role tabulky symbolů

6.2 Organizace tabulky symbolů

6.3 Vytvoření a vyhledávání tabulky symbolů

Shrnutí této kapitoly

Rozšířené čtení

Samotestovací cvičení 6

Cvičení 6

Kapitola 7 Optimalizace kódu

< p>7.1 Overview of optimization

7.2 Částečná optimalizace

7.2.1 Způsob dělení základních bloků

7.2.2 DAG reprezentace základních bloků

< p>7.2.3 Use DAG to optimize basic blocks

7.3 Optimalizace smyčky

7.3.1 Vývojový diagram a smyčka programu

7.3.2 Vyhledávání ve smyčce

7.3.3 Optimalizace smyčky

7.4 Optimalizace kukátka

Shrnutí této kapitoly

Rozšířené čtení

Samotestovací cvičení 7

Cvičení 7

Kapitola 8 Organizace a správa úložiště za běhu

8.1 Přehled

8.2 Static Storage Allocation< /p>

8.3 Přidělení složeného úložiště

8.3.1 Simple Stacked Storage Allocation

8.3.2 Přidělení složeného úložiště pro vnořený proces

8.4 Přidělení úložiště haldy

8.5 Alokace úložiště dočasných proměnných

Shrnutí této kapitoly

Rozšířené čtení

Self-test exercise 8< /p>

Cvičení 8

Kapitola 9 Generování objektového kódu

9.1 Přehled

9.2 Hypotetický počítačový model

9.3 Jednoduchý generátor kódu

9.3.1 Pohotovostní informace a aktivní informace

9.3.2 Algoritmus generování kódu

9.3.3 Přidělení registru

Technologie automatického generování generátoru kódu 9.4

Shrnutí této kapitoly

Rozšířené čtení

Samotestovací cvičení 9

Cvičení 9

Kapitola 10 Základní znalosti technologie paralelní kompilace

10.1 Zavedení technologie paralelní kompilace

10.2 Funkce a struktura paralelního kompilačního systému

10.2.1 Funkce paralelního kompilačního systému

10.2.2 Struktura paralelního kompilačního systému

10.3 Technologie kompilace vektorového jazyka

10.3.1 Zpracování syntaxe vektorů

p>

10.3.2 Optimalizace vektorové struktury

10.4 Technologie paralelní kompilace se sdílenou pamětí

10.4.1 předkompilace

10.4.2 can be re Imported target code p>

Shrnutí této kapitoly

Cvičení 10

Dodatek A Generátor lexikálního analyzátoru Lex

A.1 Úvod do generátoru Lexikálního analyzátoru

p>

Formát vstupního souboru A.2Lex

A.3 Lex konvence pro regulární výrazy

Pravidla zdrojového programu A.4Lex

A.5 Možnosti příkazů Flex

Příklad programu A.6Lex

Dodatek B generátor programu syntaktické analýzy YACC

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

B.2 Formát vstupního souboru YACC

B.3 Formát zápisu YACC

B.3.1 definiční část

B.3.2 Část Pravidla

B.3.3 Sekce pomocného programu

Vestavěný mechanismus názvu a definice B.4YACC

Kombinované použití B.5Flex a Bison

Dodatek C Experimenty s kompilátorem

C.1 Lexikální analýza

C.1.1 Cíle experimentu

C.1.2 Požadavky na experiment

C.1.3 Algoritmické myšlenky programu lexikální analýzy

C.1.4 Programový rámec jazyka C programu lexikální analýzy

C.2 Syntaktická analýza

C.2.1 Účel experimentu

C.2.2 Experimentální požadavky

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

C.2.4 Programový rámec jazyka C programu syntaktické analýzy

p>

C.3 Sémantická analýza

C.3.1 Experimentální účel

C.3.2 Experimentální požadavky

C.3.3 Jazyk C programu sémantické analýzy Program Framework

C.4 Metoda analýzy priorit operátora

C.5 Experimentální příklad

C.6 Konverze formální formy do grafického znázornění automatů

p>

C.6.1 Experimentální účel

C.6.2 Experimentální požadavky

C.6.3 Referenční designové nápady

C.6.4 Referenční algoritmus

Příloha D autotestová cvičení a referenční odpovědi na cvičení

Reference

Související články
HORNÍ