Postać normalna Greibach
Postać normalna Greibach (GNF) to specyficzna forma gramatyki bezkontekstowej. W tej formie reguły mają postać:
,
gdzie jest symbolem terminalnym, a to ciąg symboli nieterminalnych (może być pusty). Wyjątkową regułą jest , generująca wyraz pusty, która jest dozwolona, jeżeli symbol startowy nie występuje po prawej stronie żadnej produkcji.
Konstrukcja postaci normalnej Greibach
Aby przekształcić gramatykę bezkontekstową w GNF, zakładamy, że znajduje się ona w postaci normalnej Chomsky’ego. Proces ten można zrealizować w dwóch głównych etapach:
1. Podstawienie za pierwszy symbol po prawej
Wybieramy regułę, w której pierwszy symbol po prawej stronie jest nieterminalny, nazwijmy go . Zastępujemy go nowymi regułami, które odpowiadają wszystkim regułom z po lewej stronie. Przykładowo, dla reguły , jeśli , to zamieniamy na odpowiednie reguły.
2. Zastąpienie reguł lewostronnie rekursywnych
Reguły lewostronnie rekursywne to te, gdzie pierwszy symbol po prawej stronie jest taki sam jak po lewej. Wprowadzamy nowy symbol nieterminalny , tworząc dwie produkcje z reguł rekursywnych, a następnie usuwamy pierwotne reguły rekursywne. Przykład:
- staje się oraz .
Kolejność wykonywania operacji
Przekształcanie gramatyki w GNF wykonujemy w dwóch etapach. Pierwszy etap zapewnia, że reguły mają pierwszy symbol po prawej stronie jako terminalny bądź nieterminalny o wyższym indeksie. W drugim etapie przetwarzamy reguły, zaczynając od tych z najwyższym indeksem, aby upewnić się, że prawa strona każdej reguły zaczyna się od symbolu terminalnego.
W rezultacie, po zastosowaniu obu etapów, gramatyka osiąga postać normalną Greibach, co umożliwia jej efektywne wykorzystanie w różnych zastosowaniach w teorii języków formalnych oraz automatyce.