Ú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 grammar4.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 function4.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 4Kapitola 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 optimization7.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 blocks7.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