**Frázová gramatika** je jeden z najdôležitejších modelov na opis formálnych jazykov. 

Jednotlivé slová gramatika generuje pomocou svojich pravidiel zo štartovacieho symbolu. V každom kroku je možné podľa pravidiel prepísať istú časť už vytvoreného slova na iné. Do jazyka, ktorý táto gramatika generuje, potom vyberieme tie odvodené slová, ktoré sa skladajú len zo špeciálnych symbolov -- terminálov.

Definícia
---------

Frázová gramatika {\displaystyle G} je usporiadaná štvorica {\displaystyle G=(N,T,P,\sigma )}, kde

* {\displaystyle N} je abeceda **neterminálnych symbolov** (neterminálov),
* T je abeceda **terminálnych symbolov** (terminálov), pričom {\displaystyle N\cap T=\emptyset },
* {\displaystyle P\subseteq \_{kon}(N\cup T)^{\*}N(N\cup T)^{\*}\times (N\cup T)^{\*}} je množina **prepisovacích pravidiel** (konečná!),
* {\displaystyle \sigma \in N} je **počiatočný neterminál**.

Prvky {\displaystyle (u,v)} relácie {\displaystyle P} (prepisovacie pravidlá) sa zvyknú označovať zápisom {\displaystyle u\rightarrow v}, ktorý názornejšie vyjadruje, že časť {\displaystyle u} vo vetnej forme sa má prepísať na {\displaystyle v}.

Prepisovanie, odvodenie a jazyk generovaný frázovou gramatikou zavedieme teraz formálne:

**Krok odvodenia** v gramatike {\displaystyle G} je binárna relácia na množine vetných foriem (t. j. {\displaystyle (N\cup T)^{\*}}) označovaná symbolicky {\displaystyle \Rightarrow } a definovaná takto:

{\displaystyle x\_{1}ux\_{2}\Rightarrow y\_{1}vy\_{2}} práve vtedy, keď {\displaystyle u\rightarrow v\in P} pre nejaké {\displaystyle x\_{1},x\_{2},y\_{1},y\_{2},v\in (N\cup T)^{\*},u\in (N\cup T)^{\*}N(N\cup T)^{\*}}

Symbol {\displaystyle \Rightarrow ^{\*}} označuje reflexívno-tranzitívny uzáver relácie {\displaystyle \Rightarrow }.

**Jazyk generovaný gramatikou** {\displaystyle G} je množina terminálnych slov {\displaystyle L(G):=\{w\in T^{\*}~|~\sigma \Rightarrow ^{\*}w\}}.

Sila
----

Trieda jazykov, ktoré dokážu vygenerovať frázové gramatiky, je presne tá istá trieda, ktorú dokážu akceptovať Turingove stroje. Táto trieda jazykov sa nazýva ako trieda rekurzívne vyčísliteľných jazykov a označuje sa {\displaystyle {\mathcal {L}}\_{RE}}.

Postupným pridávaním rôznych obmedzení na pravidlá frázových gramatík získame (väčšinou) slabšie gramatiky (t. j. generujúce ostrú podmnožinu rekurzívne vyčísliteľných jazykov), napr. kontextové gramatiky, bezkontextové gramatiky či regulárne gramatiky. Rekurzívne vyčísliteľné jazyky stoja na vrchu Chomského hierarchie jazykov.

Keďže frázová gramatika ako taká má konečný zápis (hoci reprezentuje potenciálne nekonečný objekt -- jazyk), všetkých frázových gramatík je spočítateľne veľa, z čoho vyplýva, že k veľkej väčšine jazykov sa nedá nájsť príslušná frázová gramatika, ktorá ich generuje. Tieto jazyky sú však veľmi komplikované a vykazujú istú „nepredstaviteľnosť". Príkladom jazykov, ktoré nie sú rekurzívne vyčísliteľné, sú komplement diagonálneho jazyka či komplement univerzálneho jazyka.

| Formálne jazyky, automaty a gramatiky |
| --- |
| **Chomskéhohierarchia** | **Gramatika** | **Jazyk** | **Minimálnyautomat** |
| Typ-0 | Frázová | Rekurzívne vyčísliteľný | Turingov stroj |
|  |  | Rekurzívny | Vždy zastavujúci Turingov stroj |
| Typ-1 | Kontextová | Kontextový | (Nedeterministický) lineárne ohraničený |
| Typ-2 | Bezkontextová | Bezkontextový | (Nedeterministický) zásobníkový |
| Typ-3 | Regulárna | Regulárny | Konečný |
| Každá množina jazykov alebo gramatík je vlastnou nadmnožinou množiny priamo pod ňou. |