10 Stimmen

Wo kann ich Material zum Erlernen der EBNF erhalten?

Erweiterte Backus-Naur-Form: EBNF

Ich bin sehr neu in der Analyse von Konzepten. Wo kann ich ausreichend leicht zu lesendes und zu befolgendes Material zum Schreiben einer Grammatik für die boost::spirit-Bibliothek finden, die eine EBNF-ähnliche Grammatik verwendet?

Derzeit untersuche ich EBNF aus Wikipedia.

5voto

Eugene Yokota Punkte 92703

Die BNF selbst ist einfach, aber man muss sich an die Denkweise der Compiler-Autoren gewöhnen. Sie sind nicht unbedingt leicht zu lesen, aber im Folgenden finden Sie Vorlesungsunterlagen der UC Berkeley und Stanford.

5voto

Norman Ramsey Punkte 193087

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 .

1voto

Naveen Punkte 5682

Aquí ist ein ebnf-Parser in php.

Außerdem könnte es hilfreich sein, ein wenig über die Implementierung von Engines für reguläre Ausdrücke zu lernen. Versuchen Sie es: re2 .

0voto

Malcolm Punkte 39950

Nun, ich denke, dass Wikipedia aus zwei Gründen der einfachste Weg ist:

  • Er enthält die wichtigsten Punkte des Artikels
  • Am Ende der Seite finden Sie Links zu weiterführenden Informationen

Ich empfehle auch die Lektüre von Standard-BNF nur um sich mit der Idee dahinter vertraut zu machen.

Zumindest beginne ich auch immer mit Wikipedia, und das hilft fast immer.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X