Principio di compilazione (4a edizione)

introduzione

Il libro introduce sistematicamente i principi generali di costruzione, i metodi di progettazione di base e le principali tecniche di implementazione del compilatore. Il contenuto include: conoscenza di base della grammatica e della lingua, principi di progettazione e metodi di costruzione di programmi di analisi lessicale, varie tecnologie di analisi grammaticale, tecnologia di traduzione guidata dalla grammatica e generazione di codice intermedio, organizzazione e gestione della tabella dei simboli, ottimizzazione del codice, organizzazione dello spazio di archiviazione runtime Base conoscenza della gestione, generazione di codice oggetto, tecnologia di compilazione parallela, ecc.

Catalogo libri

Capitolo 1 Panoramica sulla compilazione

1.1 Traduttore e compilatore

1.2 Processo del compilatore e struttura di base del compilatore

1.3 Metodo di generazione del compilatore

1.4 Applicazione della tecnologia di compilazione nello sviluppo del software

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 1

Esercizio 1

Capitolo 2 Conoscenze di base della grammatica e della lingua

2.1 Panoramica

2.2 Concetti base di alfabeto e stringa di simboli

2.2.1 Alfabeto e stringa di simboli

2.2.2 Operazione con stringa di simboli

2.3 Grammatica e linguaggio Definizione formale

2.3.1 Linguaggio formale

2.3.2 Definizione formale della grammatica

2.3.3 Definizione formale del linguaggio

2.3 .4 Derivazione Normativa e Riduzione Normativa

2.3.5 Regole ricorsive e ricorsività della grammatica

2.4 Frasi, frasi dirette e maniglia

2.4.1 Frasi E frasi dirette

2.4.2 Maniglia

2.5 Ambiguità tra albero sintattico e grammatica

2.5.1 Derivazione e albero sintattico

2.5.2 Ambiguità della grammatica

2.5.3 Eliminazione dell'ambiguità grammaticale

2.6 Classificazione della grammatica e della lingua

2.7 La praticità della grammatica Restrizioni e trasformazioni

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 2

Esercizio 2

Capitolo 3 Analisi lessicale e automi finiti

3.1 Funzione del programma di analisi lessicale

3.2 Simboli di parole e moduli di parole in uscita

3.2.1 Parole nei simboli del linguaggio

3.2.2 La forma delle parole di output del programma di analisi lessicale

3.3 Due definizioni di simboli linguistici

3.3.1 Normal form and normal set< /p>

3.3.2 Grammatica normale e forma normale

3.4 Forma normale e automi finiti

3.4.1 Automi finiti determinati (DFA)

3.4.2 Automi finiti non deterministici (NFA)

3.4.3 Costruire NFA dall'espressione regolare R

3.4.4 Method of determinizing NFA into DFA< /p>

3.4.5 Semplificazione del DFA

3.4.6 Conversione da automi finiti a forma normale

3.5 Grammatica normale e automi finiti

3.5.1 Metodo di conversione dalla grammatica normale lineare destra agli automi finiti

3.5.2 Metodo di conversione dalla grammatica normale lineare sinistra agli automi finiti

3.5 .3 Metodo di conversione da automa finito a grammatica regolare

3.6 Metodo di scrittura del programma di analisi lessicale

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 3

Esercizio 3

Capitolo 4 Analisi della sintassi

4.1 Funzione del programma di analisi della sintassi

4.2 Metodo di analisi dall'alto verso il basso

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

4.2.2 Ricorsione a sinistra della grammatica ed eliminazione del backtracking

4.2.3 Riscrittura di alcune grammatiche non LL(1) in LL(1).

4.2.4 Metodo di analisi della discesa ricorsiva

4.2.5 Metodo di analisi predittiva e analisi predittiva Struttura della tabella

4.3 Principi generali dell'analisi bottom-up

4.4 Analisi delle priorità dell'operatore

4.4.1 Panoramica del metodo

< p>4.4.2 Definition of operator precedence grammar

4.4.3 Costruzione della tabella delle relazioni di precedenza degli operatori

4.4.4 Progettazione dell'algoritmo di analisi della precedenza degli operatori

< p>4.4.5 Construction of precedence function

4.4.6 Limitazioni dell'analisi della precedenza degli operatori

Metodo di analisi 4.5LR

Analizzatore 4.5.1LR Il principio di funzionamento e il processo di

4.5.2Metodo di analisi LR(0).

4.5.3Metodo di analisi SLR(1).

4.5.4 Metodo di analisi LR(1).

Metodo di analisi 4.5.5LALR(1).

4.5.6 Applicazione del metodo di parsing LR alla grammatica ambigua

4.5.7 Recupero degli errori nella tecnica di parsing LR

4.6 Metodo di scrittura del programma di analisi della sintassi

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 4

< p>Exercise 4

Capitolo 5 Tecnologia di traduzione guidata dalla grammatica e generazione di codice intermedio

5.1 Panoramica

5.2 Grammatica degli attributi

5.3 Grammatica Panoramica della traduzione guidata

5.4 Lingua intermedia

5.4.1 Stile polacco inverso

5.4.2 Rappresentazione ternaria e ad albero

5.4.3 Codici quaternari ea tre indirizzi

5.5 Traduzione bottom-up guidata dalla sintassi

5.5.1 Traduzione di semplici espressioni aritmetiche e istruzioni di assegnazione

5.5.2 Traduzione di espressioni booleane

5.5.3 Traduzione delle dichiarazioni di controllo

5.5.4 Traduzione di istruzioni di ciclo

5.5.5 Brevi dichiarazioni descrittive Traduzione di

5.5.6 Traduzione di istruzioni di assegnazione contenenti elementi di array

5.5.7 Traduzione di istruzioni di chiamata di procedura e funzione

5.6 Traduzione guidata dalla sintassi della discesa ricorsiva

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 5

Esercizio 5

Capitolo 6 L'organizzazione e la gestione della tabella dei simboli

6.1 Il ruolo della tavola dei simboli

6.2 L'organizzazione della tavola dei simboli

6.3 L'istituzione e la ricerca della tabella dei simboli

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 6

Esercizio 6

Capitolo 7 Ottimizzazione del codice

< p>7.1 Overview of optimization

7.2 Ottimizzazione parziale

7.2.1 Metodo di divisione dei blocchi di base

7.2.2 Rappresentazione DAG dei blocchi base

< p>7.2.3 Use DAG to optimize basic blocks

7.3 Ottimizzazione del ciclo

7.3.1 Diagramma di flusso e loop del programma

7.3.2 Ricerca loop

7.3.3 Ottimizzazione del ciclo

7.4 Ottimizzazione dello spioncino

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 7

Esercizio 7

Capitolo 8 Organizzazione e gestione dello storage in fase di runtime

8.1 Panoramica

8.2 Static Storage Allocation< /p>

8.3 Allocazione dello stoccaggio in pila

8.3.1 Semplice allocazione dello storage impilato

8.3.2 Allocazione dello storage in pila per il processo nidificato

8.4 Allocazione della memoria heap

8.5 Allocazione della memoria delle variabili temporanee

Riassunto di questo capitolo

Lettura estesa

Self-test exercise 8< /p>

Esercizi 8

Capitolo 9 Generazione del codice oggetto

9.1 Panoramica

9.2 Modello informatico ipotetico

9.3 Generatore di codice semplice

9.3.1 Informazioni in standby e informazioni attive

9.3.2 Algoritmo di generazione del codice

9.3.3 Allocazione del Registro

La tecnologia di generazione automatica del generatore di codice 9.4

Riassunto di questo capitolo

Lettura estesa

Esercizio di autotest 9

Esercizio 9

Capitolo 10 Conoscenza di base della tecnologia di compilazione parallela

10.1 Introduzione della tecnologia di compilazione parallela

10.2 Funzione e struttura del sistema di compilazione parallela

10.2.1 Funzione del sistema di compilazione parallela

10.2.2 Struttura del sistema di compilazione parallela

10.3 Tecnologia di compilazione del linguaggio vettoriale

10.3.1 Elaborazione della sintassi vettoriale

p>

10.3.2 Ottimizzazione della struttura vettoriale

10.4 Tecnologia di compilazione parallela della macchina parallela a memoria condivisa

10.4.1 precompilazione

10.4.2 can be re Imported target code p>

Riassunto di questo capitolo

Esercizio 10

Appendice A Generatore di analizzatore lessicale Lex

A.1 Introduzione al generatore di analizzatore lessicale Lex

p>

Formato file di input A.2Lex

A.3 Convenzioni Lex per le espressioni regolari

A.4 Regole del programma sorgente Lex

Opzioni di comando A.5Flex

Esempio di programma A.6Lex

Appendice B generatore di programma di analisi della sintassi YACC

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

B.2 Formato del file di input YACC

B.3 Formato di scrittura YACC

B.3.1 definizione parte

B.3.2 Sezione Regole

B.3.3 Sezione del programma ausiliario

Nome integrato e meccanismo di definizione di B.4YACC

L'uso combinato di B.5Flex e Bison

Appendice C Esperimenti del compilatore

C.1 Analisi lessicale

C.1.1 Obiettivi dell'esperimento

C.1.2 Requisiti dell'esperimento

C.1.3 Pensieri algoritmici del programma di analisi lessicale

C.1.4 Struttura del programma in linguaggio C del programma di analisi lessicale

C.2 Analisi della sintassi

C.2.1 Lo scopo dell'esperimento

C.2.2 Requisiti sperimentali

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

C.2.4 La struttura del programma in linguaggio C del programma di analisi della sintassi

p>

C.3 Analisi semantica

C.3.1 Scopo sperimentale

C.3.2 Requisiti sperimentali

C.3.3 Linguaggio C del programma di analisi semantica Programma Quadro

C.4 Metodo di analisi della priorità dell'operatore

C.5 Esempio sperimentale

C.6 Conversione di forma formale in rappresentazione grafica di automi

p>

C.6.1 Scopo sperimentale

C.6.2 Requisiti sperimentali

C.6.3 Idee progettuali di riferimento

C.6.4 Algoritmo di riferimento

Appendice D esercizi di autotest e risposte di riferimento agli esercizi

Riferimenti

Related Articles
TOP