3 Stimmen

Antlr Baumdurchquerung mit Java

Ich habe eine Frage zu Antlr, ich baue einen einfachen Parser mit ihm, aber ich kann den Baum nicht durchlaufen. Ich habe viele Online-Tutorials gefunden und sie verwenden eine getAst(); Funktion der Klasse Parser. Hat jemand Erfahrung mit dieser Funktion? Ich habe das Gefühl, dass die Art und Weise, dies zu tun, je nach Version unterschiedlich ist.

grammar SimpleCalc;

options 
{
    output=AST; 
} 

tokens {
    PLUS    = '+' ;
    MINUS   = '-' ;
    MULT    = '*' ;
    DIV = '/' ;
    SEMICOLON = ';';
    EQUAL = '=';
    COMMA = ',';
    BRACKETL = '(';
    BRACKETR = ')';
}

Hat jemand eine Idee oder einen Vorschlag, wie man den Baum auf eine andere Weise durchqueren kann?

3voto

Bart Kiers Punkte 160101

getAST() ist eine Methode aus CommonAST die in ANTLR v2.x verwendet wird.

ANTLR v3.x verwendet CommonTree stattdessen. Bei der Definition von output=AST geben alle Parserregeln eine Instanz von RuleReturnScope die eine getTree() Methode können Sie den Baum abrufen.

Siehe auch diese frühere Frage und Antwort, die zeigt, wie man den AST nach dem Parsen einer Eingabe in die Hand bekommt: Wie kann man den mit ANTLR erstellten AST ausgeben?

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