Ich verwende derzeit ein Python 2.5-Beispiel von der ANTLR-Website. Ich frage mich, ob die Grammatik auch bereits Semantik erzeugt. Wenn es keine gibt, was kann ich tun oder was kann ich (Werkzeuge) verwenden, um nach der Analyse mit ANTLR Semantik für Python zu generieren?Bietet ANTLR Semantik
Antwort
Es gibt kein Tool zum Generieren der Semantik einer Sprache, das Sie selbst implementieren müssen.
Nachdem Sie nun den Python-Code analysiert haben, können Sie zuerst die erforderliche Verarbeitung durchführen, sie dann erneut als Python-Code ausgeben und eine vorhandene Implementierung der Python-Sprache zur Ausführung verwenden.
ANTLR behandelt das Parsing, aber nicht die Semantik; Es ist schließlich ein Tool zur Parsergenerierung. Wenn Sie eine Semantik hinzufügen würden, hätten Sie eine vollständige Python-Implementierung (Modulo, das die Bibliotheken erweitert).
Mit ANTLR können Sie Semantiken in Bezug auf Aktionen angeben, die mit Grammatikregeln verknüpft sind. Für einfache Aufgaben mag das praktisch sein, aber für größere Grammatiken genügt es meist, einen AST (Abstract Syntax Tree) zu erzeugen, d. H. Eine Darstellung dessen, was Sie geparst haben, die innerhalb eines Programms bequemer zu handhaben ist als eine sehr lange Zeichenfolge.
Ob oder wie viel davon in dem Beispiel enthalten ist, die Sie verwenden ist eher schwer zu sagen, ohne den Code zu sehen ;-)
import_as_name : NAME (NAME)? \t; Ist das ein Beispiel für Semantik? – marchemike
Nein, das ist eine Syntaxregel, d. H. Eine Beschreibung, wie ein richtiges Programm gebildet wird. Semantik wäre Code, um das Modul zu finden, das in der 'import'-Anweisung erwähnt wird, und beginnt, daraus Anweisungen zu lesen. –
Ich habe absolut keine Ahnung, wie ich die Semantik werde tun, könnten Sie schlagen Sie irgendeine Ressource vor, die ich verwenden könnte, um Semantik zu schaffen? – marchemike
Die Sprache wird in der Python-Sprachreferenz beschrieben: http://docs.python.org/reference/ Es ist Ihre beste Wahl, um die Semantik der Python-Sprache zu lernen. –