ANTLR грамматика, возвращающая java имя метода, которое может быть выполнено с использованием java компилятора - PullRequest
0 голосов
/ 11 марта 2020

У меня есть следующая грамматика ANTLR:

tree grammar findApp;

options {
    tokenVocab=TSRTemplate;
    ASTLabelType=CommonTree;
    backtrack=true;
}


@header {
}

@members {

}

prog returns [String value]
        : ^(ROOT f=formula) {$value = $f.value; }
        ;

formula returns [String value]
        : ^(DEFINITION INTEGER t=calc_expr) {$value = $t.value;}
        ;

calculation_expr returns [String value]
@init {
    $value = null;
}
    : calculation_unit {$value = $calculation_unit.value;}
    | ^(PLUS n1=calculation_expr n2=calculation_expr) {
        $value="addApproach(<calculation_expr1>, <calculation_expr2>)";
    }
    ;

calc_unit returns [String value]
    : cf_expr {$value = $cf_expr.value;}
    ;

cf_expr returns [String value]
    :  ^(GET_APP string_expr)
    {
        $value = "getApp("+$STRING.text + ")";
    }
    ;

Что мне нужно сделать, это как показано ниже:

Например, следующая грамматика:

cf_expr returns [String value]
    :  ^(GET_APP string_expr)
    {
        $value = "getApp("+$STRING.text + ")";
    }
    ;

вернет getApp(<some parameter>), что является именем метода.

Этот метод реализован в классе java (Method. java),

Я хочу, чтобы моя грамматика возвращала этот метод Назовите и скомпилируйте этот java класс (Method. java) и выполните реализацию метода в этом классе.

Любые предложения по интеграции компиляции java класса с ANTLR будут полезны.

...