使用ANTLR 4构建AST

时间:2014-02-18 22:56:08

标签: java compiler-construction antlr4 abstract-syntax-tree

我正在创建一个最终必须被翻译成Java源代码的DSL。我正在使用ANTLR 4生成一个解析树(使用Visitor树行走方法)来解析基于语法文件在DSL中编写的代码片段。我正在访问方法中直接创建Java AST。

任何人都可以确认/拒绝这是否是一个好习惯?或者,如果我在将AST转换为Java之前为我的DSL构建了一个AST,那会不会有用呢?

示例(按原样,直接构建Java AST):

@Override
public JavaNode visitPrintExp(PrintExpContext ctx) {
    JavaExprNode jen = (JavaExprNode) visit(ctx.exp());
    JavaPrintNode jpn = new JavaPrintNode(jen);
    return jpn;
}

遵循以下语法规则:

printExp:'print('exp')';

提案:

@Override
public DSLNode visitPrintExp(PrintExpContext ctx) {
    DSLExprNode den = (DSLExprNode) visit(ctx.exp());
    DSLPrintNode dpn = new DSLPrintNode(den);
    return dpn;
}

0 个答案:

没有答案