Der Wikipedia-Artikel ist korrekt. Wenn Sie Zugang haben, lesen Sie unbedingt Der ursprüngliche Artikel von Wirth auf EBNF.
Außerdem wurde die EBNF so konzipiert, dass sie leicht von Hand zu schreibende rekursiv-absteigende Parser für Sprachen, in denen jedes syntaktische Konstrukt identifizierende Schlüsselwörter am Anfang hat. Geschweifte Klammern übersetzen mit while
Schleifen; eckige Klammern (optionales Material) bedeutet, dass if
und Alternativen übersetzen zu if-then-else
o case
Aussagen. Wenn Sie den Luxus haben, Ihre Sprache auf diese Weise zu gestalten, können Sie schnell einen Parser erstellen y geben gute Fehlermeldungen.
Der einzige Ort, an dem dies etwas mühsam wird, ist eine Sprache, in der es Infix-Operatoren mit vielen verschiedenen Präzedenzstufen gibt. Hierfür eignet sich Dave Hansons Arbeit Kompaktes rekursiv-absteigendes Parsing von Ausdrücken . Vielleicht gibt es von der Princeton-Tech-Report-Reihe eine kostenlose Version, und Sie können sich den Code jederzeit in Hanson's C-Front-End .