O gramatică obișnuită este o gramatică formală de tip 3 în ierarhia Chomsky , gramaticile regulate definesc exact toate limbajele regulate și, prin urmare, sunt echivalente cu mașinile de stări și cu expresiile regulate . Gramaticile obișnuite sunt un subset al gramaticilor fără context .
O gramatică obișnuită poate fi specificată printr-un set de reguli ca o gramatică normală stânga sau dreapta.
Gramatica obișnuită dreaptă sau gramatică liniară dreapta - toate regulile pot fi în una dintre următoarele forme:
gramatică obișnuită stângă sau gramatică liniară stângă - toate regulile pot fi în una dintre următoarele forme:
Unde
Clasele de gramatici regulate dreapta și stânga sunt echivalente - fiecare luată separat este suficientă pentru a defini toate limbajele obișnuite. Orice gramatică obișnuită poate fi convertită de la stânga la dreapta și invers.
Denumirile alternative se datorează faptului că sunt subclase ale clasei mai generale de gramatici liniare .
Gramatica regulată dreaptă G dată de N = {S, A}, Σ = {a, b, c}, P constă din următoarele reguli:
S → aS S→bA A→ε A→cAiar S este simbolul de început. Această gramatică descrie aceeași limbă ca și expresia regulată a*bc*.
Este esențial ca regulile să fie fie doar stânga-regulate, fie doar dreapta-regulate. Nu este permisă o combinație a ambelor. De exemplu, un limbaj cu șiruri fără context de forma , unde nu este regulat, dar este dat de o gramatică G , unde N = {S, A}, Σ = {a, b}, P constă din
S→aA A→Sb S→εiar S este simbolul de început. Această gramatică conține atât reguli stânga-regular, cât și dreapta-regular și, prin urmare, nu este obișnuită.
Limbi formale și gramatici formale | |
---|---|
Concepte generale | |
Tip 0 | |
Tipul 1 |
|
Tip 2 | |
Tip 3 | |
analizare |