- Sind die von PEGs erkannten Sprachen alle kontextfrei?
Nein, wie Brian Ford in seiner Veröffentlichung von PEGs aus dem Jahr 2004 hervorhob , aus der das folgende kurze Zitat hervorgeht:
Satz: Die Klasse der PELs enthält nicht kontextfreie Sprachen.
Beweis: Die klassische Beispielspracheeinnbncn ist nicht kontextfrei, aber wir können es mit einem PEG erkennen G = ( { A , B , D } , { a , b , c } , R , D ), wobei R die folgenden Definitionen enthält:
A ← a A b / ε
B ← b B c / ε
D ← & ( A ! B )ein∗B ! .
- Wenn die Antwort auf (1) Nein lautet, gibt es ausdrucksstarke Grammatikformalismen, die garantiert nur eindeutige Grammatiken erzeugen? Insbesondere würde fallen& und ! nur kontextfreie Grammatiken liefern?
Auch ohne ! (und daher ohne &, da es formal definiert ist in Bezug auf !) müssten Sie sich immer noch mit der impliziten Ergänzung befassen, die in der Definition der geordneten Wahl verborgen ist. Ich habe kein konkretes Beispiel für eine geordnete Auswahl, die zu einer Nicht-CFL führt, aber ich würde versuchen, eine zu finden, indem ich mit zwei CFGs beginneL.1 und L.2 deren Differenz keine CFL ist und die in PEGs umgewandelt werden kann P.1 und P.2. Nun, wennc ist ein Symbol nicht in beiden Sprachen, dann die PEG P.2/.P.1c sollte erkennen L.2∪ (L.1- -L.2) c, die keine CFL ist.
- Wenn alle PEGs kontextfrei sind, können sie über einen Algorithmus in eine äquivalente BNF umgewandelt werden?
Wenn meine obige Vermutung richtig ist, ist diese Frage nicht zutreffend, aber auf jeden Fall gibt es keinen mir bekannten Algorithmus zum Konvertieren zwischen PEGs und CFGs, und ich glaube, dass die Gleichwertigkeit eines PEG und eines CFG unentscheidbar ist. Diese Tatsache erschwert das oben vorgeschlagene Beweisverfahren. :) :)