More actions
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 27: | Riadok 27: | ||
== Referencie == | == Referencie == | ||
<references /> | <references /> | ||
{{Téma|Oblast=Kategória:Formálne jazyky a automaty|Poradie= | {{Téma|Oblast=Kategória:Formálne jazyky a automaty|Poradie=30}} | ||
[[Kategória:Formálne jazyky a automaty]] | [[Kategória:Formálne jazyky a automaty]] |
Verzia z 14:45, 1. november 2024
Vysvetlíme si rôzne typy gramatík a pravidiel zápisu, Chomského hierarchiu a predstavíme si zložitejšie úlohy pre tvorbu gramatík a jazykov.
Chomského hierarchia gramatík
Gramatiky, ktoré sme si predstavili v predošlej téme mali zmiešané typy. Gramatiky ale môžeme rozlíšiť podľa ich spôsobu zápisu pravidiel do rôznych kategórií.{{#display_diagram:Drawio:Chomského hierarchia gramatík}}V roku 1956 Noam Chomsky položil základy pre túto hierarchiu vo svojej práci ("Three models for the description of language"). Cieľom práce bolo skúmať spôsoby, akým by bolo možné vytvoriť formálnu gramatiku ktorá generuje všetky platné lingvistické konštrukcie v anglickom jazyku.
Neskôr sa dospelo k záveru, že jazyky majú vo všeobecnosti nasledovnú hierarchiu:
- typ: 🔃 rekurzívne enumerovateľné gramatiky - bez reštrikcií pre tvorbu pravidiel, pravá strana pravidla môže byť kratšia ako ľavá (symboly môžme mazať. Sú to najvoľnejšie typy gramatík, chápe im iba Turingov stroj (ale typy automatov si vysvetlíme až neskôr).
Napr.: alebo . - typ: 🧠 kontextové gramatiky - ľavá strana pravidla musí obsahovať aspoň jeden neterminálny symbol a pravá strana musí obsahovať aspoň jeden neprázdny terminálny alebo neterminálny symbol. Pravá strana pravidla musí byť dlhšia ako ľavá (symboly nemôžme mazať, teda tieto dve pravidlá sem nepatria: , ). Tieto typy gramatík sa používajú najčastejšie pre popis syntaxe programovacích jazykov.
Napr.: alebo . - typ: 🔀 bezkontextové gramatiky - ľavá strana pravidla musí obsahovať práve jeden neterminálny symbol a pravá strana pravidla musí obsahovať aspoň jeden terminálny alebo neterminálny symbol.
Napr.: . - typ: ➡️ regulárne gramatiky - najviac reštriktívne gramatiky. Ľavá strana pravidla musí obsahovať práve jeden neterminálny symbol a pravá strana pravidla musí obsahovať maximálne jeden neterminálny symbol za ktorým nasleduje ihneď práve jeden terminálny symbol.
Napr.: alebo .
Platí, že jednotlivé typy gramatík sú hierarchiou podmnožín. Napríklad, 🧠 kontextové gramatiky a 🔀 bezkontextové gramatiky spĺňajú kritériá pravidiel pre ➡️ regulárne gramatiky (ale nie naopak). Ak sa pozrieš na spôsoby zápisu pravidiel zdola hore, budeš vidieť ako sa postupne stávajú voľnejšími a pravidlá tým pádom môžu byť zložitejšie (viac rekurzie, a podobne).
Referencie