PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

Podobné dokumenty
Jednoznačné a nejednoznačné gramatiky

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Automaty a gramatiky

Překladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})

Kapitola 6. LL gramatiky. 6.1 Definice LL(k) gramatik. Definice 6.3. Necht G = (N, Σ, P, S) je CFG, k 1 je celé číslo.

Implementace LL(1) překladů

/01: Teoretická informatika(ti) přednáška 5

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

/1: Teoretická informatika(ti) přednáška 4

Čísla značí použité pravidlo, šipka směr postupu Analýza shora. Analýza zdola A 2 B 3 B * C 2 C ( A ) 1 a A + B. A Derivace zleva:

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

1. Definujte překladač. Jaký je rozdíl mezi interpretačním a kompilačním překladačem? Co je to konverzační překladač?

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Formální jazyky a gramatiky Teorie programovacích jazyků

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

Dynamické programování

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Syntaxí řízený překlad

Vztah jazyků Chomskeho hierarchie a jazyků TS

Poslední aktualizace: 26. října 2011

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

Návrh algoritmů pro sémantické akce při výstavbě interpretu metodou rekurzivního sestupu

Základní datové struktury III: Stromy, haldy

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

1.Charakterizujte křížový překladač 2.Objasněte pojem silikonový překladač 3.Co to jsou formátory textu? Uveďte příklad

2 Formální jazyky a gramatiky

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

Konstruktory překladačů

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Lexikální analýza Teorie programovacích jazyků

Programovací jazyk Pascal

Stromy, haldy, prioritní fronty

Úvod do programovacích jazyků (Java)

Semestrální práce z předmětu Teorie programovacích jazyků

Syntaktická analýza založená na multigenerativních systémech Závěrečná práce z předmětu TJD. Jakub Martiško

GENEROVÁNI KÓDU jazyk Mila

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.

Spojitost a limita funkce

8. Rekurze. doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

TÉMATICKÝ OKRUH TZD, DIS a TIS

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY.

Sudý počet jedniček: S 1 0S 1 1S 2 e S 2 1S 1 0S 2

Formální jazyky a automaty Petr Šimeček

Rekurzivní algoritmy

S ROZPTÝLENÝM KONTEXTEM

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

Zásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b

Studijní program ELEKTROTECHNIKA A INFORMATIKA

1. Charakterizujte pojem křížový překladač Překlad na jiném procesoru než exekuce (viz zabudované systémy (např. pračky, myčky, automobily)).

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

NPRG030 Programování I, 2015/16 1 / :25:32

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Naproti tomu gramatika je vlastně soupis pravidel, jak

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Anotace. zpět k rekurzi: teorie her. Martin Pergel,

Algoritmizace. 1. Úvod. Algoritmus

Teoretická informatika

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Interpret jazyka IFJ2011

Učební texty k státní bakalářské zkoušce Programování Základy teoretické informatiky. študenti MFF 15. augusta 2008

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/31

Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP

Rozklad problému na podproblémy

Semestrální práce implementuje univerzální tokenizer založený na stavovém automatu. Jsou implementovány následující automaty:

Lineární algebra : Násobení matic a inverzní matice

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

1) Sekvenční a paralelní gramatiky

Základy teoretické informatiky Formální jazyky a automaty

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Slepé prohledávání do šířky Algoritmus prohledávání do šířky Při tomto způsobu prohledávání máme jistotu, že vždy nalezneme koncový stav, musíme ale p

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

PŘEDNÁŠKA 2 POSLOUPNOSTI

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

Lexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2

Anotace. Dámy na šachovnici dominance a nezávislost. Aritmetické výrazy, notace a převody mezi nimi, nejdelší rostoucí podposloupnost.

Poslední aktualizace: 14. října 2011

Lexikální analýza. Miroslav Beneš Dušan Kolář

Automaty a gramatiky. Roman Barták, KTIML. Separované gramatiky. Kontextové gramatiky. Chomského hierarchie

Konečný automat. Jan Kybic.

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Na rozšiřující přednášce minulý týden jsme se věnovali zejména. algoritmu, který k zadanému konečnému automatu sestrojí ekvivalentní regulární výraz

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA MULTIGENEROVÁNÍ PARSING BASED ON MULTIGENERATION

1 Posloupnosti a řady.

Lineární algebra : Násobení matic a inverzní matice

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Transkript:

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNAKICKÁ ANALÝZA DOKONČENÍ, IMPLEMENACE. VLASNOSI LL GRAMAIK A JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Gramatika generující aritmetický výraz Požadavky na syntaktickou strukturu (derivační strom) výrazů v gramatice: Strom musí respektovat prioritu operátorů: 1. ( ) 2. * 3. + Výpočet zdola-nahoru ve stromě se při stejné prioritě operátorů provádí zleva doprava.

Gramatika generující aritmetický výraz Gramatika: (1) E E + (2) E (3) * F (4) F (5) F a (6) F ( E ) Pozn. ato gramatika není LL(k) pro žádné k>=1, protože obsahuje levou rekurzi.

Levá derivace a derivační strom pro větu a+a*a E 1 E+ 2 + 4 F+ 6 a+ 3 a+*f 4 a+f*f 6 a+a*f 6 a+a*a E 1 E 2 E E E 3 E + E + E + E + F F E 4 E 6 E 6 a E + E + E + E + * F * F * F * F F F F F F F a a a a

Posloupnost přechodů při analýze shora-dolů pro větu a+a*a : (a+a*a, E) (a+a*a, E+) expanze pravidlem (1) (a+a*a, +) expanze pravidlem (2) (a+a*a, F+) expanze pravidlem (4) (a+a*a, a+) expanze pravidlem (5) (+a*a, +) srovnání (a*a, ) srovnání (a*a, *F) expanze pravidlem (3) (a*a, F*F) expanze pravidlem (4) (a*a, a*f) expanze pravidlem (5) (*a, *F) srovnání (a, F) srovnání (a, a) expanze pravidlem (4) (, ) srovnání

Odstranění levé rekurze z gramatiky (1) E E + (2) E (3) * F (4) F (5) F a (6) F ( E ) (1) E E (2) E E (3) E ε (4) F (5) F (6) ε (7) F a (8) F ( E ) Pozn. tato gramatika je již LL(1).

Konstrukce rozkladové tabulky Množiny FIRS(α) a Follow(A) pro pravidla A α gramatiky: FIRS(E )= { a,( } FOLLOW(E)={ ), ε } FIRS( E )= { + } FIRS( ε )={ ε } FIRS( F )= { a,( } FIRS( F )= { } FIRS( ε )= { ε } FIRS( a )= { a } FIRS( ( E ) )= { ( } FOLLOW(E )={ ), ε } FOLLOW()={ +,), ε } FOLLOW( )={ +,), ε } FOLLOW(F)={ +, *, ), ε }

Rozkladová tabulka a + * ( ) ε E 1 1 E 2 3 3 4 4 6 5 6 6 F 7 8

Průběh LL(1) analýzy (a +a *a, E, ε ) ( a +a*a, E', 1 ) ( a +a*a, F ' E', 14 ) ( a +a*a, a ' E', 147 ) ( +a*a, ' E', 147 ) ( +a*a, E', 1476 ) ( +a*a, + E', 14762 ) ( a*a, E', 14762 )

Průběh LL(1) analýzy ( a*a, a ' E', 1476247 ) ( *a, ' E', 1476247 ) ( *a, * F ' E', 14762475 ) ( a, F ' E', 14762475 ) ( a, a ' E', 147624757 ) ( ε, ' E', 147624757 ) ( ε, E', 1476247576 ) ( ε, ε, 14762475763 )

Implementace LL(1) analýzy Nejčastější implementace LL(1) analýzy je tzv. metoda rekurzivních procedur (neboli metoda rekurzivního sestupu). Rekurze v procedurách similuje činnost zásobníkového automatu.

Implementace rekurzivním sestupem Pro každý neterminál procedura ělo procedury A: větvení do tolika alternativ, kolik je A-pravidel + chyba Pro pravidlo A 1... m má tělo procedury tvar if Symb SELEC(A, 1) then analýza podle pravé strany 1 else... else if Symb SELEC(A, m) then analýza podle pravé strany m else chyba při expanzi neterminálu A kde SELEC(A, ) = FIRS( ), když FIRS( ), SELEC(A, ) = FOLLOW(A) (FIRS( ) { }), když FIRS( ).

Implementace rekurzivním sestupem Jestliže pro pravou stranu platí = X1 X2... Xn pak jí odpovídající analýzu provede posloupnost příkazů X'1 X'2... X'n, kde X'i je příkaz procedury Xi, když Xi je neterminální symbol, X'i je příkaz procedury Srovnej(Xi), když Xi je terminální symbol. Procedura Srovnej(x) je definována takto: if x = Symb then čtení dalsího vstupního symbolu else chyba při srovnání (očekává se x)

Vlastnosti LL gramatik a jazyků

Gramatika, která není LL(1) Pokud gramatika není LL(1), nastává při kostrukci rozkladové tabulky nedeterminismus tzv. kolize. Existují dva typy těchto kolizí: Kolize typu FIRS-FIRS příklad: S asb Ac, A aab b Kolize typu FIRS-FOLLOW příklad: S asb csa ε

Definice Bezkontextový jazyk L se nazývá LL(k) jazyk, jestliže existuje LL(k) gramatika G taková, že L=L(G). Bezkontextový jazyk L se nazývá LL jazyk, jestliže existuje LL(k) gramatika G pro nějaké k>=0 taková, že L=L(G).

Věta 1 Každá LL(k) gramatika je jednoznačná. Věta 2 Žádná LL(k) gramatika není levě rekurzivní. Věta 3 Pro danou bezkontextovou gramatiku G a dané pevné k>=0 je rozhodnutelné, zda G je nebo není LL(k).

Věta 4 Pro danou bezkontextovou gramatiku G je nerozhodnutelné, zda je LL(k) gramatikou pro nějaké k>=0. Věta 5 Je-li dána bezkontextová gramatika G, která není LL(k) a pevné k, je nerozhodnutelné, zda G má ekvivalentní gramatiku, která je LL(k).

Příklad jazyk, který není LL L = { a^m b^n : m>=n>=0 } Pozn. ento jazyk je obdobou konstruktu if-then a if-thenelse, který se běžně vyskytuje v programovacích jazycích (deterministické řešení bude ukázáno na příští přednášce).