Gramatyki formalne, hierarchia Chomsky`ego
Transkrypt
Gramatyki formalne, hierarchia Chomsky`ego
Gramatyki formalne, hierarchia Chomsky’ego Pojęcie gramatyki formalnej (lingwistyka matematyczna) Gramatyka formalna to uporządkowana czwórka: G=(V,T,P,S) gdzie: V jest zbiorem symboli nieterminalnych T jest zbiorem symboli terminalnych P jest zbiorem produkcji, z których każda ma postać: +, * S jest symbolem początkowym = V T jest słownikiem Hierarchia Chomsky’ego Klasa 0 Gramatyki klasy 0 to gramatyki kombinatoryczne (GKomb) (gramatyki nieograniczone). Definicja gramatyki klasy 0 nie nakłada żadnych ograniczeń na postać produkcji gramatyki w stosunku do ogólnej definicji gramatyki formalnej. P: +, * Języki generowane przez gramatyki klasy 0 to języki rekurencyjnie przeliczalne (JRP). Problem polegający na określeniu czy słowo w L(GKomb) jest nierozstrzygalny. Klasa 1 Gramatyki klasy 1 to gramatyki kontekstowe (GK) (gramatyki nieskracające). Definicja gramatyki klasy 1 nakłada następujące ograniczenia na postać produkcji gramatyki: P: ,+ 0 < || || oraz dodatkowo jeżeli język zawiera słowo puste dopuszczalna jest produkcja postaci S Powyższe ograniczenie nałożone na postać produkcji wyjaśnia nazwę gramatyki nieskracającej. Długość łańcucha nie może być krótsza od długości łańcucha . Postać produkcji gramatyk nieskracających można także opisać inaczej i stąd ich drugie określenie jako gramatyki kontekstowe. P: A AV, ,*, + W postaci tej nazywanej postacią normalną produkcje opisują możliwości zastąpienia symbolu nieterminalnego A łańcuchem tylko w lewostronnym kontekście i prawostronnym kontekście . Języki generowane przez gramatyki klasy 1 to języki kontekstowe (JK). Problem polegający na określeniu czy słowo w L(GK) jest rozstrzygalny. Klasa 2 Gramatyki klasy 2 to gramatyki bezkontekstowe (GBK). Definicja gramatyki klasy 2 nakłada ograniczenie na postać głowy produkcji określając, że zawierać może ona tylko symbol nieterminalny. P: A AV, * Pojęcie gramatyki bezkontekstowej pochodzi od tego, że produkcje tej gramatyki określają reguły zastępowania symbolu nieterminalnego A przez łańcuch niezależnie od kontekstu, w jakim znajduje się symbol A. Języki generowane przez gramatyki klasy 2 to języki bezkontekstowe (JBK). Problem polegający na określeniu czy słowo w L(GBK) jest rozstrzygalny. Klasa gramatyk bezkontekstowych jest bardzo istotną klasą w informatyce ze względu na to, że za pomocą GBK opisuje się składnię języków programowania. Klasa 3 Gramatyki klasy 3 to gramatyki regularne (GR) (gramatyki liniowe). Definicja gramatyki klasy 3 nakłada ograniczenie na postać ciała produkcji określając, że w łańcuchu stanowiącym ciało produkcji może wystąpić tylko jeden symbol nieterminalny i musi się on znajdować na początku bądź na końcu łańcucha. Gramatyki liniowe możemy podzielić na: Gramatyki prawostronnie liniowe P: A xB Ax A,BV, xT* A,BV, xT* oraz na gramatyki lewostronnie liniowe P: A Bx Ax Gramatyki, w których występują produkcje dopuszczalne w gramatykach lewo- i prawostronnych to gramatyki liniowe, czyli regularne. Języki generowane przez gramatyki klasy 3 to języki regularne (JR). Problem, który rozstrzyga czy słowo w L(GR) jest rozstrzygalny. Klasa gramatyk regularnych jest również bardzo istotną klasą w informatyce ze względu na to, że za pomocą GR opisuje się składnię elementów leksykalnych (słownikowych) języków programowania. Poniżej przedstawiono zawieranie się klas gramatyk i języków formalnych. GR GBK GK GKomb JR JBK JK JRP Automaty, hierarchia Chomsky’ego Klasa 3 Automat skończony, JR Klasa 2 Automat ze stosem, JBK Klasa 1 Automat ograniczony liniowo, JK Klasa 0 Maszyna Turinga, JRP Rodzaj automatu Ruch Zapis na taśmie Automat skończony w jedną stronę nie AZS Automat ze stosem w jedną stronę AOL Automat ograniczony liniowo Maszyna Turinga AS MT Długość taśmy Funkcja przejścia Stos skończona 21 nie nie skończona 32 tak w obie strony tak skończona 23 nie w obie strony tak nieskończona 23 nie