Překladače 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.
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.
Funkce Lineární funkce a její vlastnosti 2. Funkce − definice Funkce je předpis, který každému číslu z definičního oboru, který je podmnožinou množiny.
Ř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.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Vladimír Mikulík. Slezské gymnázium, Opava, příspěvková organizace. Vzdělávací materiál.
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Ě
Překladače 5. Syntaktická analýza
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.
ROZVRHOVÁNÍ SLUŽEB VE ZDRAVOTNICKÉM ZAŘÍZENÍ
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
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
Stavební fakulta ČVUT, B407
8.1.3 Lineární obal konečné množiny vektorů
Katalogizace beletrie pro knihovny ČR
Fyzika 7.ročník ZŠ Otáčivé účinky sil Creation IP&RK.
MNOŽINY.
Konstrukce trojúhelníku
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
(obsah a rozsah pojmu, klasifikace pojmů)
Zásobníkový automat Konečný automat i nedeterministický konečný automat umí řešit tytéž úlohy, akorát s různou efektivitou. Nazývají se regulární úlohy.
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á
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: ");
Tečné a normálové zrychlení
Transkript prezentace:

Překladače Syntaktická analýza © Milan Keršláger 27.08.2018 http://www.pslib.cz/ke/slajdy 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 nebo 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 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

Derivační stromy (z příkladu výše) * 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é

Víceznačnost gramatiky jednoznačná 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 terminá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 a 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 (použita levá derivace) derivační strom na následujícím obrázku

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

Otázka jednoznačnosti při analýze programu však postupujeme opačně máme větnou formu a hledáme pravidla program musí být deterministický existují však pravidla se stejnou levou stranou 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ší znak, 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