Překladače 5. Syntaktická analýza

Slides:



Advertisements
Podobné prezentace
Téma: Využití Accessu pro tvorbu evidence našeho podnikání Vypracovala: Jana Wasserbauerová.
Advertisements

Školení MS Word 2007 pro začátečníky RNDr. Milan Zmátlo MěÚ Třebíč, říjen 2011 Vzdělávání v eGON centru Třebíč Tento.
Název školy: ZŠ A MŠ ÚDOLÍ DESNÉ, DRUŽSTEVNÍ 125, RAPOTÍN Název projektu: Ve svazkové škole aktivně - interaktivně Číslo projektu: CZ.1.07/1.4.00/
Ekonomicko-matematické metody č. 11 Prof. RNDr. Jaroslav Ramík, CSc.
Tým 32, varianta b/4/I.  Jakub Kadlubiec  Roman Pijáček  Petr Pliska  Jan Štourač  Václav Tunka (vedoucí)
ZAL – 5. cvičení Martin Tomášek Pole - opakování Základní datový typ. V poli držíme více elementů (jednoho typu) S elementy v poli můžeme manipulovat.
Autor:Ing. Pavel Brož Předmět/vzdělávací oblast:Informační a komunikační technologie Tematická oblast:Práce se standardním aplikačním programovým vybavením.
2.3 ROZKLAD VÝRAZŮ NA SOUČIN Mgr. Petra Toboříková.
Plánovací část projektu Cíl projektu - vychází z řešení z prognostické části, - odpovídá na otázku, čeho má být dosaženo? - představuje slovní popis účelu.
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
Senzory pro EZS.
Základy automatického řízení 1
Číselné množiny - přehled
Zajištění obsluhy všech úseku dopravní sítě Předmět: Teorie dopravy - cvičení Ing. František Lachnit, Ph.D.
ANALYTICKÁ GEOMETRIE V ROVINĚ
ŠKOLA: Městská střední odborná škola, Klobouky u Brna,
Matematika 3 – Statistika Kapitola 4: Diskrétní náhodná veličina
Rozhodování 1.
Lineární funkce - příklady
Řešení nerovnic Lineární nerovnice
Lineární rovnice a nerovnice I.
Překladače 5. Syntaktická analýza
MODELY TEORIE GRAFŮ.
ORGANIZACE DAT V POČÍTAČI
Grafické řešení lineárních rovnic
Financováno z ESF a státního rozpočtu ČR.
Překladače Lexikální analýza
Jedno-indexový model a určení podílů cenných papírů v portfoliu
Základní škola a Mateřská škola Bílá Třemešná, okres Trutnov
ZAL – 9. cvičení 2016.
Vlastnosti trojúhelníku
8.1.2 Podprostory.
ADT zásobník - příklad Prakticky aplikovatelný příklad využití ADT zásobník je vyhodnocování aritmetických výrazů v Postfixové notaci: Pro zápis aritmetických.
Databáze MS ACCESS 2010.
Programovací jazyky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Překladače 4. Lexikální analýza
Běžné reprezentace grafu
Překladače 6. Sémantická analýza
Základy zpracování geologických dat testování statistických hypotéz
VY_32_INOVACE_
Kvadratické nerovnice
Regulátory spojité VY_32_INOVACE_37_755
Matematika pro stavební obory 19. Autor: RNDr. Zdeněk Bláha
Obchodní akademie, Střední odborná škola a Jazyková škola s právem státní jazykové zkoušky, Hradec Králové Autor: Mgr. Martina Slánská Kalhousová Název.
Programování (14PRG) 1. cvičení.
Řešení nerovnic Lineární nerovnice
Překladače Syntaktická analýza
MNOŽINY.
Jak postupovat při měření?
Konstrukce trojúhelníku
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Teorie chyb a vyrovnávací počet 1
(obsah a rozsah pojmu, klasifikace pojmů)
Primitivní funkce Přednáška č.3.
AUTOR: Mgr. Hana Vrtělková NÁZEV: VY_32_INOVACE_M_06_Hra 3 TEMA: Hra 3
Dynamické programování Úloha batohu neomezená
Shodnost trojúhelníků Konstrukce trojúhelníků
Základy infinitezimálního počtu
VLASTNOSTI GRAFŮ Vlastnosti grafů - kap. 3.
PROLOG strategie vyhodnocení dotazu
Lineární funkce a její vlastnosti
Informatika – Základní operace s buňkami
Funkce v jazyce C = „množina“ operací, která provádí nějakou činnost s různými vstupy odstranění vícenásobného psaní či vkládání téhož kódu a lepší přehlednost.
Algoritmizace a datové struktury (14ASD)
Grafy kvadratických funkcí
Algoritmizace a datové struktury (14ASD)
Dělitelnost přirozených čísel
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Diagnostika dítěte předškolního věku
Tečné a normálové zrychlení
Transkript prezentace:

Překladače 5. Syntaktická analýza Obsah: vstup a výstup syntaktické analýzy derivační strom, odvození z gramatiky determinismus, víceznačné gramatiky metoda shora dolů a zdola nahoru řešení nejednoznačnosti pomocné množiny FIRST a FOLLOW © Milan Keršláger http://www.pslib.cz/ke/slajdy 24.3.2011 http://creativecommons.org/licenses/by-nc-nd/3.0/

Syntaktická analýza druhá fáze zpracování zdrojového kódu vstup: posloupnost symbolů dodává lexikální analyzátor výstup: derivační strom postihuje strukturu programu syntaktické chyby nesprávná posloupnost symbolů: 13:=celkem if a=1 else y:=x then y=a+1

Derivační strom derivační strom derivace v gramatice G je orientovaný acyklický graf s jediným kořenem do všech všech uzlů vstupuje 1 hrana (kromě kořene) kořen je ohodnocen startovacím symbolem gramatiky koncové uzly stromu → terminální symbol nebo ε ε – prázdný řetězec ostatní uzly ohodnoceny neterminálními symboly koncové uzly čtené zleva doprava tvoří větnou formu v gramatice G v kterékoliv fázi konstrukce derivační strom tvoříme zleva doprava a shora dolů, proto není potřeba značit orientaci hran

Příklad Máme bezkontextovou gramatiku G s pravidly P: G = ({S},{n,i,+,*},P,S) P = S→S+S | S*S | n | i Odvodíme větu n+n*i třemi různými derivacemi: D1: S → S*S → S+S*S → n+S*S → n+n*S → n+n*i D2: S → S*S → S+S*S → n+S*S → S+n*i → n+n*i D3: S → S+S → S+S*S → n+S*S → n+n*S → n+n*i

Derivace D1 S → S*S → S+S*S → n+S*S → n+n*S → n+n*i S S * S S + S i n

Derivace D2 S → S*S → S+S*S → n+S*S → S+n*i → n+n*i S S * S S + S i n

Derivace D3 S → S+S → S+S*S → n+S*S → n+n*S → n+n*i S S + S n S * S n

Porovnání derivačních stromů * S S + S S + S i n S * S n n n i Derivace D1 a D2 Derivace D3

Determinismus pro tutéž větu může existovat více der. stromů viz výše D1 a D3 různé derivace mohou mít stejný der. strom viz výše D1 a D2 → nedeterministický postup naprosto nevhodné pro programování algoritmus musí být deterministický determinismus → jednoznačnost gramatiky programovací jazyky bohužel takové nejsou gramatiky pro ně jsou víceznačné

Gramatiky jedno- a víceznačné jednoznačná gramatika pro každý terminální řetězec generovaný gramatikou existuje jeden derivační strom špatně se hledají víceznačná gramatika existuje terminální řetězec patřící do jazyka gramatiky, ke kterému lze sestrojit více der. stromů jednoznačnost dosáhneme stanovením dodatečných podmínek pro vytvoření derivace levá derivace → v řetězci přepisujeme nejlevější neterminál pravá derivace → přepisujeme neterminál nejvíce vpravo

Metody syntaktické analýzy metodu syntaktické analýzy definujeme podle postupu konstrukce derivačního stromu: metoda shora dolů (Top-Down) konstruujeme od kořene k listům a zleva doprava metoda zdola nahoru (Bottom-Up) postupujeme od listů ke kořeni, také zleva doprava

Příklad S → AB 1 A → aAb | ab 2, 3 B → cB | c 4, 5 přepisovací pravidla čísla pravidel S → AB 1 A → aAb | ab 2, 3 B → cB | c 4, 5 pro obě metody odvodíme aabbcc stačí ukládat čísla použitých pravidel zjednodušení výstupu syntaktické analýzy není nutné mít v paměti celý strom volbou použité metody definujeme LP derivaci → posloupnost je jednoznačná

Metoda shora dolů pravidla: S → AB 1 A → aAb | ab 2, 3 B → cB | c 4, 5 S → AB → aAbB → aabbB → aabbcB → aabbcc levý rozklad: 1, 2, 3, 4, 5 byla použita levá derivace derivační strom na následujícím obrázku

Řešení nejednoznačnosti program musí být deterministický při analýze máme větnou formu a hledáme pravidla existují však pravidla se stejnou levou stranou (!) vzniká otázka, jaké pravidlo má být použito máme dvě možnosti analýza s návratem vyzkoušíme jedno z pravidel a když problém, vrátíme se příliš pomalé deterministická analýza nahlížení na další vstupující znak nebo kontrola symbolu(ů) pod vrcholem zásobníku používá se běžně

Metoda zdola nahoru pravidla: S → AB 1 A → aAb | ab 2, 3 B → cB | c 4, 5 S → AB → AcB → Acc → aAbcc → aabbcc pravý rozklad je obrácená posloupnost pravidel protože zprava doleva, ale automat čte zleva doprava automat tedy postup obrací (než je potřeba ke generování věty) pravý rozklad: 3, 2, 5, 4, 1 (použita pravá derivace) derivační strom na následujícím obrázku

S → AB → AcB → Acc → aAbcc → aabbcc

Řešení nejednoznačnosti program musí být deterministický máme větnou formu a hledáme pravidla existují však pravidla s podobnou pravou stranou lze je použít na stejný podřetězec větné formy máme dvě možnosti analýza s návratem nejlevější, co nejdelší podřetězec shodný s pravou stranou když problém, vrátíme se a vybereme jiný podřetězec → příliš pomalé deterministická analýza nahlížení na další znak nebo kontrola (celého) zásobníku používá se běžně

Pomocné množiny FIRST(α) α je libovolná větná forma generovaná gramatikou G FIRST je množina terminálních symbolů, jimiž začínají řetězce derivované z α (terminály i neterminály) pokud existuje pravidlo α → *ε, pak ε patří do FIRST FOLLOW(A) A je neterminál gramatiky G FOLLOW je množina terminálních symbolů a, které se mohou vyskytovat bezprostředně vpravo od A existuje tedy derivace S → *βAaγ pokud je A ukončující, do FOLLOW též $ (konec vstupu) určuje se vždy pro všechny neterminály (mny. jsou vzájemně závislé)

FIRSTK a FOLLOWK pro složitější gramatiky k určuje délku terminálních řetězců řazených do hledané množiny bez indexu uvažujeme k=1 u vyšších čísel nese množina více informací FIRST(Ba) – začínající na c nebo a FIRST2(BA) – umí například omezit začínající na c tak, že víme, že to může být cc nebo ca, ale ne však cb