formální jazyky a gramatiky

16
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

Upload: maya

Post on 05-Jan-2016

45 views

Category:

Documents


3 download

DESCRIPTION

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. Formální jazyky a gramatiky. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Formální jazyky a gramatiky

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

Page 2: Formální jazyky a gramatiky

Formální jazyky a gramatiky

Způsob zápisu gramatických pravidel:<definovaná jednotka> 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:<věta> <podmětná část> <přísudková část>

<podmětná část > <podstatné jméno><podstatné jméno > tom< přísudková část > <sloveso> <předmětná část>< sloveso > hraje<předmětná část> <podstatné jméno><podstatné jméno > hokej

Page 3: Formální jazyky a gramatiky

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. slovosledTom 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.

Page 4: Formální jazyky a gramatiky

Gramatika

K definici gramatiky jsou potřebnéneterminální symboly = symboly, které musí být dále definoványterminální symboly = prvotní symboly jazykapřepisovací pravidla = gramatická pravidla potřebná k tvorbě větpočá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ž NT=ØSN je počáteční (startovní, iniciační) symbola P je množina přepisovacích pravidel, která je konečnou podmnožinou množiny (NT)*N (NT)* x (NT)*

Page 5: Formální jazyky a gramatiky

Gramatika

Poznámky k definici gramatiky: Zápis (NT)*N (NT)* x (NT)* 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

Page 6: Formální jazyky a gramatiky

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 }

Page 7: Formální jazyky a gramatiky

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 (NT)* definujeme relaci derivace G následujícím způsobem: jestliže (NT)* a (NT)* , potom dané řetězce jsou v relaci G , tj. G , pokud v P existuje pravidlo .

Jestliže , (NT)* a platí G , potom říkáme, že

je možné v jednom kroku odvodit (derivovat) z (přímo odvodit).

Page 8: Formální jazyky a gramatiky

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 2G aaAC )

B G AC G aAC G abC G ab1C G ab11C G ab111

(B 6G ab111 )

G …… G ……. G ( *G )

Page 9: Formální jazyky a gramatiky

Použití gramatiky

DEF: Nechť G=(N, T, P, S) je gramatika. Množinu řetězců (NT)* , 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 , (NT)* }

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

Page 10: Formální jazyky a gramatiky

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 G1 a G2 jsou ekvivalentní, pokud platí L(G1)=L(G2)

Page 11: Formální jazyky a gramatiky

Příklad ekvivalentní gramatiky

Příklad: G1 = ({A, B, C}, {a, b,…,z}, P1, A),

P1 = { A B | AC

B a C a | b | …. | z }

G2 = ({D, E}, {a, b,…,z}, P2, D),

P2 = { D a | aE

E EE | a | b | …. | z }

L(G1) = ?, L(G2) = ?

L(G1) = L(G2) = {všechna slova začínající písmenem a}

Page 12: Formální jazyky a gramatiky

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.

Page 13: Formální jazyky a gramatiky

Klasifikace gramatik

Noam Chomski – podle tvaru přepisovacích pravidelDEF: 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 (NT)* N (NT)*, (NT)+ a platí ||| |

gramatika typu 2 (bezkontextová), jestliže každé přepisovací pravidlo z P má tvar A , A N, (NT)*

gramatika typu 3 (regulární), jestliže každé přepisovací pravidlo z P má tvar A bB nebo

A b, kde AN, BN, bT

Page 14: Formální jazyky a gramatiky

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 S1 a dvou přepisovacích pravidel

S1 S, S1 e

V takovémto případě budeme i nadále mluvit o gramatice kontextové či regulární

Page 15: Formální jazyky a gramatiky

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í

Page 16: Formální jazyky a gramatiky

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í: 0 1

23