Tvorba překladačů
Popis:
1. Překladač a jeho struktura
Překladač je program, který k libovolnému programu PZ v jazyku JZ vytvoří program PC v jazyku JC
se stejným významem.
Nazýváme:
» PZ ... zdrojový (překládaný) program,
» PC ... cílový (přeložený) program.
Překladač tedy zpracovává text zdrojového jazyka (zdrojový program) a převádí ho na sémanticky
ekvivalentní text cílového jazyka (cílový program).
1.1 Druhy překladačů
Překladače rozlišujeme podle typu cílového programu na dva druhy:
» kompilátor (generační překladač) je překladač, který má na vstupu program ve vyšším
programovacím jazyce (Fortran, Pascal, C, C++, Delphi, ...) a cílovým jazykem je strojový jazyk nebo
jazyk symbolických instrukcí (JSI, Assembler),
» interpret (interpretační překladač, někdy také interpreter) pouze interpretuje (provádí) zdrojový
program pro zadaná vstupní data, tedy netvoří generovaný program, vytváří jen vnitřní reprezentaci
programu pro svou vlastní potřebu (tu lze chápat jako cílový jazyk).
Kľúčové slová:
syntaktická
lexikální
semantická analýza
překladač
kompilátor
interpretace
generování kódu
Obsah:
- 1. PŘEKLADAČ A JEHO STRUKTURA -4-
1.1 Druhy překladačů -4-
1.2 Hlavní části překladače -5-
1.3 Jednoprůchodový a víceprůchodový překladač -6-
1.4 Zpracování chyb -6-
1.5 Automatizace výstavby překladačů -7-
1.6 Editory pro překladače -7-
2. LEXIKÁLNÍ ANALÝZA -10-
2.1 Zpracování textových řetězců -10-
2.2 Činnost lexikálního analyzátoru -10-
2.3 Vytvoření regulární gramatiky zdrojového jazyka -13-
2.4 Implementace lexikálního analyzátoru -14-
2.4.1 Seznam symbolů -15-
2.4.2 Tvar výstupu lexikálního analyzátoru -15-
2.4.3 Načítání znaků -15-
2.4.4 Analýza načteného znaku, vytvoření symbolu -16-
2.4.5 Analýza klíčového slova, uložení načteného symbolu -18-
2.4.6 Chybová hlášení lexikálního analyzátoru -21-
2.4.7 Hlavní procedura lexikálního analyzátoru -22-
2.5 Analýza programovacího jazyka s více datovými typy -22-
3. SYNTAKTICKÁ ANALÝZA -24-
3.1 Derivační strom -24-
3.2 Metody syntaktické analýzy -25-
3.2.1 Metoda shora dolů -25-
3.2.2 Metoda zdola nahoru -27-
3.3 Vytvoření gramatiky jazyka -27-
3.3.1 Množiny FIRST a FOLLOW -28-
3.3.2 Třídy jazyků LL(k) -30-
3.3.3 LL(1) gramatiky -31-
3.4 Syntaxe jazyka matematických výrazů -32-
3.4.1 Gramatika jazyka -32-
3.4.2 Překladový automat -33-
3.4.3 Implementace překladového automatu -36-
3.5 Popis programovacího jazyka -40-
3.5.1 Pravidla pro určování gramatických pravidel -42-
3.6 Další používané typy gramatik -43-
3.6.1 Silné LL(k) gramatiky -43-
3.6.2 Slabé LL(k) gramatiky -44-
3.6.2 LR gramatiky -46-
3.7 Formální překlady -51-
3.7.1 Překladová gramatika -53-
3.7.2 Formální překladový automat -54-
3.7.3 Rozkladová tabulka pro překladovou gramatiku -56-
4. SÉMANTICKÁ ANALÝZA -58-
4.1 Tabulka symbolů -58-
4.2 Intermediální kód -59-
4.2.1 3-adresový kód -60-
4.2.2 Sémantický strom -61-
4.2.3 Postfixový tvar -61-
4.3 Sémantická pravidla -62-
4.4 Atributovaný překlad -62-
4.4.1 Atributová překladová gramatika -62-
4.4.2 Implementace atributovaného překladu -66-
5. TYPY PŘEKLADAČŮ Z HLEDISKA JEJICH POUŽITÍ -68-
5.1 Klasické překladače -68-
5.2 Konverzační překladače -68-
5.2.1 Konverzační interpretační překladač -69-
5.2.2 Konverzační kompilační překladač -69-
6. REPREZENTACE NĚKTERÝCH PRVKŮ JAZYKA -70-
6.1 Typová kontrola a přetypování -70-
6.2 Datové typy a proměnné -70-
6.2.1 Pole -71-
6.2.2 Záznam, struktura -72-
6.2.3 Ukazatel a práce s pamětí -73-
6.2.4 Třída a objekt -74-
7. INTERPRETACE A GENEROVÁNÍ KÓDU -76-
7.1 Generování kódu v kompilátoru -76-
7.2 Interpretace -78-
7.2.1 Výrazy -78-
7.2.2 Podprogramy -79-
7.2.3 Příkazy -81-
7.2.4 Události -81-
PŘÍLOHY -83-
A. Implementace konečného automatu pro konečný jazyk -83-
A.1 Tabulka přechodů jako celočíselná matice -83-
A.2 Stav reprezentován jako proměnná -84-
A.3 Stav reprezentován místem v programu -85-
B. Lexikální analyzátor z kapitoly 2.4 -86-
C. Interpretace výrazů zásobníkovou metodou -91-
ODKAZY NA LITERATURU -94-
Zdroje:
- MELICHAR, B. Jazyky a překlady. Praha: ČVUT, 1999.
- MELICHAR, B. Základy překladačů. Praha: ČVUT, 1989.
- BENEŠ, M. Překladače.
- MELICHAR, B. - ČEŠKA, M. - JEŽEK, K. - RICHTA, K. Konstrukce překladačů I., II. Praha: ČVUT, 1999.
- WIRTH, N. Algoritmy a struktury údajů. Bratislava: Alfa, 1990.
O súboroch cookie na tejto stránke
Súbory cookie používame na funkčné účely, na zhromažďovanie a analýzu informácií o výkone a používaní stránky.