Gramatiky
Definice: Gramatika , kde
- je konečná neprázdná množina neterminálů
- je konečná neprázdná množina terminálů
- je počáteční symbol
- konečné množiny pravidel reprezentují rekurzivní definici jazyka. Každé pravidlo má tvar:
Definice: Pro gramatiku máme přepsání , jestliže existuje nějaké podslovo, dovolující využít přepisové pravidlo a přepsat na . Definice: Pro gramatiku máme derivaci existuje-li posloupnost přepsání.
Definice: Jazyk generovaný gramatikou je množina neterminální řetězců, pro které existuje derivace ze startovního neterminálu
Gramatiky rozdělujeme do několika typů dle přijímaných jazyků, nás zajímá dělení: 0. Gramatika typu 0 - rekurzivně spočetné jazyky , kde pravidla jsou v obecné formě jako v definici
- Gramatika typu 1 - kontextové gramatiky, , kde máme pravidla pouze ve tvaru
- Gramatika typu 2 - bezkontextové gramatiky - , kde máme pravidla pouze ve tvaru
- Gramatika typu 3 - regulární/pravá lineární je, regulární jazyky , kde se omezujeme jen na pravidla tvaru
Regulární výrazy
Definice: Třída regulární výrazů , kde je abeceda, tedy množina symbolů, je induktivně definován. Zavádíme také jako hodnotu regulárního výrazu (jeho jazyk). Základními prvky indukce jsou
- - prázdný řetězec, ,
- - prázdný výraz, ,
- - znak , . Indukcí definujeme operace
- - OR, ,
- - zřetězení, ,
- - Kleene star, ,
- - . Priorita operací je po řadě iterace , zřetězení, sjednocení . Třída je nejmenší třída uzavřená na všechny operace.
NFA, DFA
Definice: Deterministický konečný automat DFA je , kde
- je množina stavů,
- je množina vstupních symbolů,
- je přechodvá funkce,
- je počáteční stav,
- jsou přijímající stavy. Jazykem přijímaným je
Definice: -Nedeterministický konečný automat -NFA je , kde
- je množina stavů
- je množina vstupních symbolů
- je přechodvá funkce
- je počáteční stav
- jsou přijímající stavy.
Tvrzení: NFA je ekvivalentní DFA. Jeden se dá na druhý převést , je rovnou hotové. Na uděláme -closure na stavech, tyto množiny stavů budou nové stavy DFA a přechody odpovídající se berou podle původních NFA. Samozřejmě pokud byl nějaký původní stav přijímající tak i -closure daného stavu je přijímáno.