Frage

Erweiterte Backus-Naur Form: EBNF

Ich bin sehr neu für Parsing-Konzepte. Wo finde ich ausreichend einfach, eine Grammatik Material für das Schreiben für die boost :: spirit Bibliothek, die verwendet eine Grammatik ähnlich wie EBNF?

zu lesen und befolgen

Aktuell Suche in EBNF von Wikipedia.

War es hilfreich?

Lösung

Der Wikipedia-Artikel korrekt. Wenn Sie Zugriff haben, auf jeden Fall lesen Wirths Original-Artikel auf EBNF.

Die andere Sache zu wissen ist, dass EBNF wurde entwickelt, um es leicht zu machen rekursiven Abstieg Parser für Sprachen Hand-schreiben, in dem jedes syntaktisches Konstrukt Schlüsselwörter am Anfang zu identifizieren. Geschweiften Klammern übersetzen Schleifen while; eckige Klammern (optional Material) übersetzt if und Alternativen übersetzen if-then-else oder case Aussagen. Wenn Sie den Luxus der Gestaltung Ihrer Sprache auf diese Weise haben Sie einen Parser knock out schnell und geben gute Fehlermeldungen.

Der einzige Ort, dies wird ein bisschen langweilig ist, wenn man eine Sprache hat, in der Infixoperatoren mit vielen verschiedenen Ebenen Vorrang gibt. Dafür wollen Sie Dave Hanson Papier Compact Recursive-Descent Parsing von Ausdrücken . Vielleicht hat der Princeton Tech Report Serie eine kostenlose Version, und Sie können schauen immer auf den Code in Hansons C Front Ende .

Andere Tipps

BNF selbst ist einfach, aber Sie müssen an den Compiler Schriftsteller denken Weg zu gewöhnen. Sie sind nicht unbedingt leicht zu lesen, aber im Anschluss ist Skriptum von UC Berkeley und Stanford.

Hier ist ein EBNF-Parser in PHP.

Auch ein wenig über das Lernen, wie reguläre Ausdrücke Motoren helfen umgesetzt werden könnten. Versuchen Sie:. RE2

Nun, ich denke, dass Wikipedia die einfachste Möglichkeit, aus zwei Gründen:

  • Darin heißt es, die wichtigsten Punkte auf dem Artikel
  • Es hat Weiterführende Links am unteren Rand der Seite

Auch würde ich vorschlagen, das Lesen von standart BNF nur vertraut dahinter die Idee zu bekommen.

Wenigstens habe ich immer mit Wikipedia beginnt auch, und es hilft fast immer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top