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

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

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

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

Jednoznačné a nejednoznačné gramatiky

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

2 Formální jazyky a gramatiky

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

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

Vysoké učení technické v Brně Fakulta informačních technologií. Gramatiky nad volnými grupami Petr Blatný

Bezkontextové gramatiky nad volnými grupami

UČEBNÍ TEXTY VYSOKÝCH ŠKOL. Prof. RNDr. Milan Češka, CSc. Gramatiky a jazyky

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

Teoretická informatika TIN

Teoretická informatika TIN 2013/2014

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

Teoretická informatika - Úkol č.1

1) Sekvenční a paralelní gramatiky

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.

Strukturální rozpoznávání

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

Teoretická informatika

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. Uzávěrové vlastnosti v kostce R J BKJ DBKJ. Roman Barták, KTIML. Kvocienty s regulárním jazykem

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.

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Teoretická informatika

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

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

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

AUTOMATY A GRAMATIKY

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

Naproti tomu gramatika je vlastně soupis pravidel, jak

Čí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:

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

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

Matematická logika. Miroslav Kolařík

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

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

BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS MASTER S THESIS AUTHOR

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})

Projekty - Úvod do funkcionální analýzy

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

Konečný automat Teorie programovacích jazyků

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

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

Automaty a gramatiky

ZÁKLADY TEORETICKÉ INFORMATIKY

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky.

Matematická analýza 1

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

Úvod do informatiky. Miroslav Kolařík

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy

EKO-KOLONIE. Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě 24.

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

Složitost Filip Hlásek

Úvod do lineární algebry

Úvod do informatiky. Miroslav Kolařík

Výroková logika. Teoretická informatika Tomáš Foltýnek

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Učební texty k státní bakalářské zkoušce Matematika Diferenciální rovnice. študenti MFF 15. augusta 2008

Syntaxí řízený překlad

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Množiny, relace, zobrazení

Matematika B101MA1, B101MA2

Waldovy testy, vlastnosti a Operační charakteristika

Cvičení 1. Úvod do teoretické informatiky(2014/2015) cvičení 1 1

Doporučené příklady k Teorii množin, LS 2018/2019

SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA GRAMATICKÝCH A AUTOMATOVÝCH SYSTÉMECH PARSING BASED ON GRAMMAR AND AUTOMATA SYSTEMS

Princip rozšíření a operace s fuzzy čísly

1 Báze a dimenze vektorového prostoru 1

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Vlastnosti regulárních jazyků

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50

Operace s maticemi. 19. února 2018

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA.

(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu.

AUTOMATY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS

15 Maticový a vektorový počet II

Teoretická informatika průběh výuky v semestru 1

8 Podobná (ekviformní) zobrazení v rovině

Úvod do informatiky. Miroslav Kolařík

Predikátová logika. Teoretická informatika Tomáš Foltýnek

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

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

Referát z předmětu Teoretická informatika

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

NAIVNÍ TEORIE MNOŽIN, okruh č. 5

Cvičení ke kursu Vyčíslitelnost

Definice 1.1. Nechť je M množina. Funkci ρ : M M R nazveme metrikou, jestliže má následující vlastnosti:

Základy teorie množin

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu prof. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Interpolace, ortogonální polynomy, Gaussova kvadratura

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

prof. RNDr. Čestmír Burdík DrCs. prof. Ing. Edita Pelantová CSc. BI-ZMA ZS 2009/2010

Základní pojmy matematické logiky

METRICKÉ A NORMOVANÉ PROSTORY

Transkript:

Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz

Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina řetězců nad danou abecedou automat pro každý řetězec rozhoduje, zda patří do daného jazyka JAZYK gramatika reprezentuje jazyk pomocí pravidel pro tvorbu řetězců AUTOMAT automat a gramatika jsou navzájem převoditelné vyjadřovací prostředky GRAMATIKA Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 2 / 24

Osnova dnešní přednášky 1 Formální gramatika intuitivní chápání a definice generování věty, přímá a nepřímá derivace definice jazyka množinou vět 2 Chomského klasifikace gramatik a jazyků neomezené gramatiky kontextové gramatiky bezkontextové gramatiky lineární gramatiky vztahy mezi jednotlivými třídami Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 3 / 24

Gramatika Splňuje základní požadavek kladený na reprezentaci konečných i nekonečných jazyků konečnost reprezentace Dvě konečné disjunktní abecedy množina neterminálních symbolů N množina terminálních symbolů Σ Neterminální symboly mají roli pomocných proměnných označujících určité syntaktické celky Množina terminálních symbolů je identická s abecedou, nad níž je definován jazyk Množinu N Σ nazveme slovník gramatiky Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 4 / 24

Intuitivní chápání pojmu gramatika Pravidla, kterými se neterminální symboly přepisují na terminální symboly nebo jiné neterminální symboly Příklad Schéma jednoduché oznamovací věty v přirozeném jazyce (řetězce v závorkách představují neterminální symboly): věta ::= podmět přísudek předmět podmět ::= Petr přísudek ::= má předmět ::= počítač předmět ::= notebook Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 5 / 24

Gramatika Definice Gramatika G jazyka L je čtveřice G L = (N, Σ, P, S), kde: N je konečná neprázdná množina neterminálních symbolů Σ je konečná množina terminálních symbolů, N Σ = P (N Σ) N(N Σ) (N Σ) je konečná množina přepisovacích pravidel S N je startovací symbol (kořen) gramatiky Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 6 / 24

Dohodnuté značení Zaveďme symboliku: terminální symboly a, b, c, neterminální symboly A, B, C, řetězce pouze terminálních symbolů u, v, w, řetězce smíšených symbolů α, β, γ, Prvek (α, β) P nazveme přepisovací pravidlo a budeme jej nejčastěji zapisovat ve tvaru α β Řetězec α je levá strana přepisovacího pravidla (obsahuje alespoň jeden neterminální symbol), řetězec β je pravá strana přepisovacího pravidla Pravidla ve tvaru α β 1, α β 2,, α β n lze vyjádřit zkráceně jako α β 1 β 2 β n Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 7 / 24

Generování věty Aplikací přepisovacích pravidel lze ze startovacího symbolu gramatiky generovat věty patřící do jazyka L V průběhu generování postupně vznikají řetězce ze slovníku gramatiky (N Σ), tzv. větné formy Cílem generování je vytvoření řetězce w Σ, který neobsahuje neterminální symboly S větné formy w Příklad věta podmět přísudek předmět Petr přísudek předmět Petr má předmět Petr má počítač Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 8 / 24

Přímá a nepřímá derivace Definice Nechť G je gramatika a λ, µ jsou řetězce z (N Σ). Mezi řetězci λ a µ platí relace G nazývaná přímá derivace, jestliže je můžeme vyjádřit ve tvaru λ = γαδ, µ = γβδ, kde α β P. Libovolnou mocninu přímé derivace n nazveme nepřímá derivace. Příklad G = ( {A, S}, {0, 1}, {(S, 0A1), (0A, 00A1), (A, ϵ)}, S ) Řetězce λ = 000A111, µ = 0000A1111 Platí 000A111 0000A1111, neboť 0A 00A1 P Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 9 / 24

Derivace Definice Nechť G je gramatika a λ, µ jsou řetězce z (N Σ). Mezi řetězci λ a µ platí relace + G nazývaná derivace, jestliže existuje posloupnost přímých derivací ν i 1 ν i, kde i = 1,, n a n 1, taková, že platí: λ = ν 0 ν 1 ν n 1 ν n = µ Tuto posloupnost nazveme derivací délky n. Platí-li λ + G µ, pak řekneme, že řetězec µ lze vygenerovat z řetězce λ v gramatice G. Místo + G budeme často používat jen + Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 10 / 24

Definice jazyka množinou vět Relace + je zřejmě tranzitivním uzávěrem přímé derivace + = Definice n=1 n Řetězec α (N Σ) nazveme větnou formou, jestliže S + α. Větná forma obsahující pouze terminální symboly se nazývá věta. Jazyk L G generovaný gramatikou G definujeme jako množinu všech vět L G = {w w Σ S + w} Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 11 / 24

Definice jazyka množinou vět Příklad Je dána abeceda Σ = {a, b, c} a gramatika G nad touto abecedou: N = {S, A} P = {(S, b), (S, aac), (A, ba), (A, ϵ)} S je startovací symbol Pravidla přepíšeme do přehledné podoby a očíslujeme (1) S b (2) S aac (3) A ba (4) A ϵ Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 12 / 24

Definice jazyka množinou vět Příklad (pokračování) Aplikujeme přepisovací pravidla gramatiky: S (1) b S (2) aac (4) ac S (2) aac (3) abac (4) abc S (2) aac (3) abac (3) abbac (4) abbc S (2) aac (3) abac (3) abbac (3) abbbac (4) abbbc Generujeme postupně věty z jazyka L G = {b, ab n c n 0}.. Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 13 / 24

Příklady gramatik a jimi generovaných jazyků Příklad Jaké jazyky generují následující gramatiky? a) G = ({A}, {a, b}, P, A) L G = {a n b n n 0} A aab ϵ b) G = ({A, B, C}, {a, b, 0, 1}, P, B) L G = {a, b} {0, 1} B A C A aa ba ϵ C 0C 1C ϵ c) G = ({A, B, C}, {a, b, 0, 1}, P, B) L G = {a, b} + {0, 1} + B AC A a b aa ba C 0 1 0C 1C Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 14 / 24

Příklad ekvivalentních gramatik Příklad Gramatika G 1 = ({A, B, C}, {a, b,, z}, P 1, A) s pravidly: A B AC B a C a b z Gramatika G 2 = ({D, E}, {a, b,, z}, P 2, D) s pravidly: D a ae E EE a b z L G1 = L G2 = { w w {a, b,, z} + w začíná písm. a } Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 15 / 24

Chomského klasifikace gramatik a jazyků Při porovnávání dvou gramatik nezáleží na druhu, tvaru či počtu přepisovacích pravidel, rozhodující jsou odvozovací možnosti Protože každý jazyk lze popsat více ekvivalentními gramatikami, je účelné zkoumat nejen jaký jazyk gramatiky popisují, ale i jakým způsobem jej popisují Vhodným omezením tvaru přepisovacích pravidel je možné gramatiky rozdělit do tříd a poté klasifikovat i příslušné jazyky Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 16 / 24

Chomského klasifikace gramatik a jazyků Čtyři třídy gramatik a jazyků jimi generovaných (A N C, 1956) Postupné zpřísňování požadavků na tvar přepisovacích pravidel gramatiky Sekvenční způsob generování slova v každém kroku derivace použito právě jedno přepisovací pravidlo na právě jednom místě ve větné formě Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 17 / 24

Gramatiky typu 0 Přepisovací pravidla ve shodě s definicí gramatiky α β, α (N Σ) N(N Σ), β (N Σ) Neomezené gramatiky na tvar pravidel nejsou kladeny žádné omezující požadavky Akceptačním systémem Turingův stroj Příklad Gramatika G = ({A, B}, {a, b}, P, A) s pravidly: A AbB a AbB bab BAbB B b ϵ Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 18 / 24

Gramatiky typu 1 Přepisovací pravidla ve tvaru αaβ αγβ A N, α, β (N Σ), γ (N Σ) + Zřejmě γ 1 s výjimkou pravidla S ϵ, potom se ale S nesmí vyskytnout na pravé straně žádného pravidla Kontextové gramatiky symbol A může být přepsán řetězcem γ pouze tehdy, je-li jeho pravým kontextem β a levým kontextem α Akceptačním systémem lineárně ohraničený automat Příklad Gramatika G = ({A, S}, {0, 1, c}, P, S) s pravidly: S 0A1 0A 00A1 A c Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 19 / 24

Gramatiky typu 2 Přepisovací pravidla ve tvaru A α, A N, α (N Σ) Bezkontextové gramatiky přepsání lze provést libovolně bez ohledu na kontext, ve kterém je neterminál A uložen Akceptačním systémem zásobníkový automat Příklad Gramatika G = ({S, A, B}, {a, b}, P, S) s pravidly: S ab ba A a as baa B b bs abb Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 20 / 24

Gramatiky typu 3 Přepisovací pravidla ve tvaru A wb w, A, B N, w Σ (pravá) A Bw w, A, B N, w Σ (levá) Lineární gramatiky, které lze snadno převést na ekvivalentní regulární gramatiky Akceptačním systémem konečný automat Příklad Gramatika G = ({A, B}, {a, b, c}, P, A) s pravidly: A aab ccb B bb ϵ Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 21 / 24

Vztahy mezi třídami gramatik Definice Jazyk L generovatelný gramatikou G typu i = {0, 1, 2, 3} nazveme jazykem typu i a označíme L i. Každá další třída jazyků je obsažena v předchozí L 0 L 1 L 2 L 3 Podle označení jednotlivých tříd (uvažujeme vždy nejnižší možnou třídu) mluvíme také o jazycích neomezených (i = 0) kontextových (i = 1) bezkontextových (i = 2) lineárních (i = 3) Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 22 / 24

Vztahy mezi třídami gramatik Složitost odpovídajících tříd jazyků v hierarchii klesá Současně s tím se zjednodušuje algoritmické zjišťování některých vlastností jazyků na základě jejich reprezentace příslušnost slova do jazyka pro dané slovo w a gramatiku G zjišťujeme, zda w L G (algoritmicky řešitelné od typu 1 dále) ekvivalence gramatik pro dané dvě gramatiky G 1 a G 2 zjišťujeme, zda L G1 = L G2 (algoritmicky řešitelné pouze pro typ 3) Využití poznatků teorie vyčíslitelnosti jazyky typu 0 a 1 aplikovaná informatika jazyky typu 2 a 3 Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 23 / 24

Návrh gramatiky Příklad Navrhněte gramatiku generující jazyk HTML. Ukázka kódu: <html> <head> <meta charset= utf-8 > <title>příklad</title> </head> <body> <h1>jak navrhnout gramatiku?</h1> <p>zkuste to bude se to hodit!</p> </body> </html> Teorie programovacích jazyků Přednáška 2: Formální jazyky a gramatiky 24 / 24