Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Formální jazyky a gramatiky Gramatika = generativní způsob určení jazyka Považujme nyní za základní symbol slovo, vyšší je věta. Struktura věty je definována.

Podobné prezentace


Prezentace na téma: "Formální jazyky a gramatiky Gramatika = generativní způsob určení jazyka Považujme nyní za základní symbol slovo, vyšší je věta. Struktura věty je definována."— Transkript prezentace:

1 Formální jazyky a gramatiky Gramatika = generativní způsob určení jazyka Považujme nyní za základní symbol slovo, vyšší je věta. Struktura věty je definována určitými pravidly: pravidla věta

2 Formální jazyky a gramatiky Způsob zápisu gramatických pravidel:  definice Lomené závorky naznačují, že jednotku je nutné dále specifikovat pomocí dalších jednotek Gramatická pravidla použitá k definici předchozí věty:   tom   hraje   hokej

3 Formální jazyky a gramatiky Přestože se to zdá být snadné, formalizace přirozeného jazyka není vůbec jednoduchá Tom hraje golf. – Golf hraje Tom.  slovosled Tom s Jirkou …. Jirka s Tomem …  skloňování Tom má rád Evu. Eva má ráda Toma.  časování I po překonání těchto obtíží budeme mít velký problém, protože každá gramatika umožňuje generovat gramaticky správné věty (syntakticky správné, přípustné), ale nezaručuje sémantickou správnost Hokej hraje hokej. Tom jí polévku. – Polévka jí Toma.

4 Gramatika K definici gramatiky jsou potřebné neterminální symboly = symboly, které musí být dále definovány terminální symboly = prvotní symboly jazyka přepisovací pravidla = gramatická pravidla potřebná k tvorbě vět počáteční symbol = neterminál, od něhož odvozování začíná DEF: Gramatikou nazýváme čtveřici G=(N,T,P,S), kde N je konečná množina neterminálů T je konečná množina terminálů, přičemž N  T=Ø S  N je počáteční (startovní, iniciační) symbol a P je množina přepisovacích pravidel, která je konečnou podmnožinou množiny (N  T) * N (N  T) * x (N  T) *

5 Gramatika Poznámky k definici gramatiky: Zápis (N  T) * N (N  T) * x (N  T) * znamená požadavek na alespoň jeden neterminál na levé straně pravidla Konečnost množin je vyžadována proto,že nekonečné množiny jednak nemají praktický smysl, nebo je lze zakódovat Užitečné konvence ( BNF – Backus-Naurova forma /ALGOL/ ): Neterminály označujeme velkými latinskými písmeny Terminály označujeme malými latinskými písmeny Slova složená z neterminálů a terminálů označujeme malými řeckými písmeny Přepisovací pravidla se stejnou levou stranou, tj.  1,  2, …,  k zapíšeme jako    1 |  2 | … |  k

6 Příklady gramatik Příklad 1: G = ({A}, {a, b}, P, A), přičemž P = { A  aAb | e } Příklad 2: G = ({A, B, C}, {a, b, 0, 1}, P, B), přičemž P = { B  A | C A  aA | bA | e C  0C | 1C | e } Příklad 3: G = ({A, B, C}, {a, b, 0, 1}, P, B), přičemž P = { B  AC A  a | b | aA | bA C  0 | 1 | 0C | 1C }

7 Použití gramatiky Základem generování vět jazyka jsou přepisovací pravidla DEF: Buď G=(N, T, P, S) gramatika. Potom nad množinou (N  T) * definujeme relaci derivace  G následujícím způsobem: jestliže   (N  T) * a   (N  T) *, potom dané řetězce jsou v relaci  G, tj.   G , pokud v P existuje pravidlo . Jestliže ,   (N  T) * a platí   G , potom říkáme, že  je možné v jednom kroku odvodit (derivovat) z  (přímo odvodit).

8 Použití gramatiky Příklad: G = ({A, B, C}, {a, b, 0, 1}, P, B), přičemž P = { B  AC A  a | b | aA | bA C  0 | 1 | 0C | 1C } AC  G aAC … přímé odvození (A  aA) AC  G aAC  G aaAC … postupné odvození (AC  2 G aaAC ) B  G AC  G aAC  G abC  G ab1C  G ab11C  G ab111 (B  6 G ab111 )   G ……  G …….  G  (   * G  )

9 Použití gramatiky DEF: Nechť G=(N, T, P, S) je gramatika. Množinu řetězců  (N  T) *, které jsou odvoditelné z počátečního symbolu S, nazýváme množina větných forem. Množina větných forem V je formálně definována jako V={  | S  * G ,   (N  T) * } DEF: Nechť G=(N, T, P, S) je gramatika. Jazykem L(G) specifikovaným gramatikou G nazýváme množinu řetězců,  T *, které jsou odvoditelné z počátečního symbolu S. Formálně tedy: L(G)={  | S  * G ,   T * }

10 Použití gramatiky Poznámky k definici: Věty jazyka L(G) jsou složeny pouze z terminálů. Pokud je z kontextu zřejmé, kterou gramatiku G při odvozování máme na mysli, stačí psát  místo  G Platí vztah 1 jazyk má 1 gramatiku? Nikoliv – i různé gramatiky mohou mít stejné odvozovací možnosti. DEF: Gramatiky G 1 a G 2 jsou ekvivalentní, pokud platí L(G 1 )=L(G 2 )

11 Příklad ekvivalentní gramatiky Příklad: G 1 = ({A, B, C}, {a, b,…,z}, P 1, A), P 1 = { A  B | AC B  a C  a | b | …. | z } G 2 = ({D, E}, {a, b,…,z}, P 2, D), P 2 = { D  a | aE E  EE | a | b | …. | z } L(G 1 ) = ?, L(G 2 ) = ? L(G 1 ) = L(G 2 ) = {všechna slova začínající písmenem a}

12 Důsledky Nezáleží tedy na druhu, tvaru či počtu přepisovacích pravidel, ale rozhodující jsou odvozovací možnosti. Jelikož lze daný jazyk popsat vícero ekvivalentními gramatikami, je účelné gramatiky dále zkoumat nejen z hlediska toho, jaký jazyk popisují, ale i jakým způsobem ho popisují. Vhodným omezením tvaru přepisovacích pravidel je možné gramatiky rozdělit do tříd a v návaznosti na to klasifikovat i příslušné jazyky.

13 Klasifikace gramatik Noam Chomski – podle tvaru přepisovacích pravidel DEF: Nechť G=(N,T,P,S) je gramatika. Potom G je  gramatika typu O (neomezená), jestliže na přepisovací pravidla neklademe žádná omezení  gramatika typu 1 (kontextová), jestliže každé přepisovací pravidlo z P má tvar   , kde   (N  T) * N (N  T) *,   (N  T) + a platí |  |  |  |  gramatika typu 2 (bezkontextová), jestliže každé přepisovací pravidlo z P má tvar A  , A  N,   (N  T) *  gramatika typu 3 (regulární), jestliže každé přepisovací pravidlo z P má tvar A  bB nebo A  b, kde A  N, B  N, b  T

14 Doplnění prázdného slova Někdy potřebujeme specifikovat jazyk obsahující prázdné slovo i pro kontextové a regulární gramatiky (výše uvedené definice by to vylučovaly) Tradičně se reší přidáním nového počátečního symbolu S 1 a dvou přepisovacích pravidel S 1  S, S 1  e V takovémto případě budeme i nadále mluvit o gramatice kontextové či regulární

15 Hierarchie gramatik Z definice jednotlivých typů gramatik je automaticky zřejmé, že: Každá regulární gramatika G je bezkontextová Každá bezkontextová gramatika G je kontextová Každá kontextová gramatika G je gramatikou bez omezení

16 Hierarchie jazyků DEF: Jazyk nazýváme regulární, jestliže je možné jej generovat regulární gramatikou. DEF: Jazyk nazýváme bezkontextový, jestliže je možné jej generovat bezkontextovou gramatikou. DEF: Jazyk nazýváme kontextový, jestliže je možné jej generovat kontextovou gramatikou. DEF: Jazyk nazýváme bez omezení, jestliže je možné jej generovat gramatikou bez omezení. Zřetelně platí:


Stáhnout ppt "Formální jazyky a gramatiky Gramatika = generativní způsob určení jazyka Považujme nyní za základní symbol slovo, vyšší je věta. Struktura věty je definována."

Podobné prezentace


Reklamy Google