Обход дерева Antlr с использованием Java - PullRequest
3 голосов
/ 13 января 2012

У меня есть вопрос, касающийся Antlr, я создаю с ним простой парсер, но не могу пройти по дереву.Я нашел много онлайн-уроков, и они используют функцию getAst(); класса Parser.У кого-нибудь есть опыт с этим?У меня такое ощущение, что способ сделать это отличается в зависимости от версии.

grammar SimpleCalc;

options 
{
    output=AST; 
} 

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

У кого-нибудь есть идеи или предложения о том, как обходить дерево альтернативным способом?

1 Ответ

3 голосов
/ 14 января 2012

getAST() - это метод из CommonAST, который используется в ANTLR v2.x.

ANTLR v3.x использует CommonTree вместо этого. При определении output=AST все правила синтаксического анализатора возвращают экземпляр RuleReturnScope, который имеет метод getTree(), который можно использовать для получения дерева.

Также смотрите этот предыдущий вопрос и ответ, который показывает, как получить AST после анализа некоторого ввода: Как вывести AST, построенный с использованием ANTLR?

...