Hľadaj Zobraz: Univerzity Kategórie Rozšírené vyhľadávanie

45 033   projektov
0 nových

Technológia jazykových systémov - prekladače a konštrukcia prekladačov

«»
Prípona
.pdf
Typ
skriptá
Stiahnuté
97 x
Veľkosť
7,0 MB
Jazyk
slovenský
ID projektu
208
Posledná úprava
27.03.2017
Zobrazené
2 412 x
Autor:
-
Facebook icon Zdieľaj na Facebooku
Detaily projektu
Popis:
skripta z predmetu Prekladače + Konštrukcia prekladačov

Ukážka:

Programovací jazyk je prostriedkom, v ktorom programátor formuluje problémy pre počítač. Každý program je popisom problému, vykonateľným na počítači. Cieľom programovania je teda presné vyjadrenie problémov v programovacom jazyku, nazývaných tiež algoritmickými problémami.
Počítač je technické zariadenie, schopné vykonávať strojové inštrukcie. Jazyk strojových inštrukcií je jazykom, v ktorom je problém pripravený pre vykonanie na počítači. Prekladač je program, ktorý transformuje problém vyjadrený vo vyššom programovacom jazyku do jazyka strojových inštrukcií. Táto transformácia je možná, pretože problém ostáva tým istým problémom, bez ohľadu na to, či je vyjadrený vo vyššom programovacom jazyku alebo v jazyku strojových inštrukcií.
Dôvodom pre návrh vyšších programovacích jazykov a konštrukciu ich prekladačov je to, že čím vyššia je úroveň programovacieho jazyka, a čím primeranejší je programovací jazyk oblasti riešených problémov, tým je vyjadrenie algoritmických problémov spoľahlivejšie a rýchlejšie.
Navrhnúť programovací jazyk znamená teda definovať jeho syntax, t.j. štruktúru a sémantiku, t.j. význam jeho prvkov, a to pomocou formálnych prostriedkov návrhu. Na základe takéhoto návrhu, t.j. špecifikácie jazyka je možné konštruovať jeho prekladač, napríklad prepísaním formálnej špecifikácie do programu v programovacom jazyku, ako je napr. C alebo Pascal. Tento program je prekladačom a má dve základné funkcie:

Kľúčové slová:

technológia jazykových systémov

programovanie

prekladače

konštrukcia prekladačov

syntaktický analyzátor

procesory

asociatívnosť operácií



Obsah:
  • Predhovor 5
    Časť I — Návrh a interpretácia programovacích jazykov 7
    Ján Kollár
    1 Návrh jazyka 9
    1.1 Gramatiky a jazyky 10
    1.2 Štruktúra jazyka 12
    1.3 Formálne prostriedky návrhu jazyka 14
    1.3.1 Rozšírená Backus Naurova forma 15
    1.3.2 Denotačná sémantika jazyka 16
    1.4 Podmienky realizácie 19
    1.5 Návrh interpretátora 21
    1.5.1 Reprezentatívny program 21
    1.5.2 Definícia gramatiky jazyka 22
    1.5.3 Sémantika jazyka 23
    2 Lexikálna analýza 27
    2.1 Lexikálny analyzátor ako procedúra 27
    2.2 Technológia lexikálnej analýzy 31
    2.2.1 Preklad konštánt rôzneho typu 31
    2.2.2 Efektívny preklad identifikátorov 33
    2.2.3 Efektívny preklad kľúčových slov 35
    2.2.4 Indikácia pozície chyby 35
    2.2.5 Vstupný bafer reťazcov 35
    2.3 Autonómny lexikálny analyzátor 36
    3 Syntaktická analýza a interpretácia 39
    3.1 Konštrukcia syntaktického analyzátora 39
    3.2 Syntaxou riadený interpretátor 42
    3.3 Zotavenie pri syntaktických chybách 47
    3.3.1 Podmienky účinného zotavenia 47
    3.3.2 Základné východiská zotavenia 48
    3.3.3 Určenie množiny klúčov K 50
    3.3.4 Zotavenie pri postupnosti symbolov 53
    3.3.5 Zotavenie pri vetvení 54
    3.3.6 Zotavenie pri cykle 57
    3.3.7 Význam syntaktických chýb 59
    4 Technológia kompilácie 61
    4.1 Fázy kompilácie a základné konštrukcie 62
    4.2 Preklad a formy výstupného kódu 64
    4.2.1 Väzba prekladu na sémantickú analýzu 66
    4.2.2 Generovanie návestí 68
    4.2.3 Priorita a asociatívnosť operácií 68
    4.3 Strojovo nezávislá optimalizácia 69
    4.4 Sémantická analýza 69
    4.4.1 Typový systém jazyka 69
    4.4.2 Rovnosť monomorfických typov 74
    4.4.3 Rovnosť parametrický polymorfických typov 75
    4.4.4 Realizácia sémantickej analýzy 76
    4.4.5 Tabuľky symbolov 77
    4.4.6 Implicitné prekrývanie 79
    4.5 Selekcia kódu 81
    4.6 Optimalizácia strojového kódu 88
    4.7 Generovanie strojového kódu 89
    Literatúra 93

    Časť II — Generovanie jazykových procesorov 101
    Zdenék Havlice
    Zoznam použitých symbolov -103-
    Zoznam skratiek a označení -104-
    1 Jazykové systémy a procesory 105
    1.1 Jazykové vlastnosti systémov 105
    1.2 Jazykové procesory 106
    1.3 Prostriedky pre analýzu a návrh 106
    1.4 Význam formálnych reprezentácií 108
    1.5 Životný cyklus jazykového procesora 109
    2 Matematický model 111
    2.1 Zásobníkové automaty -111-
    2.1.1 Interpretácia prechodovej funkcie ZA -113-
    2.1.2 Rozpoznávanie viet pomocou ZA -114-
    2.1.3 Deterministický zásobníkový automat -115-
    2.1.4 Základné vlastnosti ZA -115-
    2.1.5 Vzťah ZA a syntaktickej analýxy bezkontextových jazykov 118
    2.2 Rozšírené zásobníkové automaty -118-
    2.2.1 Interpretácia prechodovej funkcie RZA -118-
    2.2.2 Deterministický RZA -120-
    2.2.3 Rozpoznávanie viet pomocou RZA -121-
    2.2.4 Základné vlastnosti ZA -121-
    2.2.5 Vzťah RZA a syntaktickej analýzy bezkontextových jazykov 123
    3 Syntaktická analýza zhora nadol 125
    3.1 Algoritmus pre jazyky LL(1) -125-
    3.1.1 Rozkladová tabuľka pre gramatiku LL(1) -126-
    4 Syntaktická analýza zdola nahor 131
    4.1 Gramatiky LR(fc 132
    4.2 Syntaktická analýza pre jazyky LR(fc 134
    4.2.1 Výpočet rozkladových tabuliek 134
    4.2.2 Algoritmus syntaktickej analýzy pre jazyky LR(fc) 143
    4.3 Hierarchia gramatík LR 145
    4.3.1 Silné gramatiky LR(0 145
    4.3.2 Silné gramatiky LR(fc 146
    4.3.3 Jednoduché gramatiky LR(fe 148
    4.3.4 Gramatiky LALR(fc 149
    5 Atribuované prekladové gramatiky 153
    5.1 Základné definície a algoritmy 153
    5.2 Výpočet hodnôt atribútov 155
    5.3 L-atribuované prekladové gramatiky 156
    5.4 5-atribuované prekladové gramatiky 166
    5.5 Optimalizácia ukladania atribútov 170
    5.5.1 Globálne atribúty 171
    5.5.2 Združené atribúty 175
    5.6 Metodika návrhu atribuovaných gramatík 178
    Literatúra