Wo fangen wir an, manuell eine CST von Grund auf neu zu erstellen? Oder benötigt ANTLR4 immer den Lex/Parse-Prozess als unseren Eingabeschritt?ANTLR4 - Code aus Nicht-Datei-Eingaben generieren?
Ich habe einige visuelle Elemente in meinem Programm, die Codestrukturen darstellen.
z.B. Ein Quadrat repräsentiert eine Klasse, während ein in dieses Quadrat eingebetteter Kreis eine Methode darstellt.
Jetzt möchte ich diese in Code verwandeln. Wie verwende ich ANTLR4 dies zur Laufzeit (mit ANTLR4.js)? Die meisten ANTLR-Beispiele scheinen auf das Lexing und Parsing von existierendem Code angewiesen zu sein, um zu einem Syntaxbaum zu gelangen. Anstatt also:
input code->lex->parse->syntax tree->output code (1)
I
willmanually create syntax tree->output code (2)
(1)
verwendet werden.)
EDIT Vielleicht verstehe ich das falsch. Erstelle ich eine benutzerdefinierte Datenstruktur und führe dann den Parser darüber aus? d.h. write structures to some in-memory format->parse->output code (3)
?
ANTLR4 erstellt keine AST, es kann nur eine CST erstellen. Wenn Sie selbst ein CST bauen wollen, was hindert Sie daran? –
@LucasTrzesniewski Es tut mir leid, ich bin neu in diesem Bereich. Mit CST nehme ich an, Sie meinen, was ANTLR den Parse-Baum nennt. Ich wollte eine AST, weil ich damit den Quellbaum in 2 Sprachen (C & JS) lesen/schreiben kann. Aber ich brauche diese nicht gleichzeitig ... ein Projekt wird in einem oder dem anderen geschrieben ... so hindert mich nichts daran, die Quelle des aktuellen Projekts zu lesen (C _oder_ JS) und dann auszugeben entsprechend. –
@LucasTrzesniewski Kann ich sicher annehmen, dass es keine Möglichkeit gibt, den Baum in ANTLR4 manuell zu erstellen (im Gegensatz zu 3)? Und daher müssen wir stattdessen einen Bytestrom lex/parsen, um ihn zu bauen? –