2

我正在使用“访问者”模式从我解析的代码中生成 XML。在典型的上下文类看起来像:

public static class On_dtmContext extends ParserRuleContext {
    public List<FieldContext> field() {
        return getRuleContexts(FieldContext.class);
    }
    public TerminalNode ON() { return getToken(SRC_REP_SCREENParser.ON, 0); }
    public On_dtm_headerContext on_dtm_header() {
        return getRuleContext(On_dtm_headerContext.class,0);
    }
.....
}

我使用 RuleContext 的“getText”成员函数访问访问者回调函数中的元素。我想编写一个继承自'ParserRuleContext'的类并重载'getText',以便用它们的xml转义序列替换'<'或'>'之类的字符。有没有一种方法可以生成我的代码并让上下文类继承自我的类,如:

public static class On_dtmContext extends XMLParserRuleContext {
    public List<FieldContext> field() {
        return getRuleContexts(FieldContext.class);
    }
    public TerminalNode ON() { return getToken(SRC_REP_SCREENParser.ON, 0); }
    public On_dtm_headerContext on_dtm_header() {
        return getRuleContext(On_dtm_headerContext.class,0);
    }
.....
}

谢谢您的帮助!亲切的问候,狼

4

1 回答 1

0

您是否有理由尝试扩展类,而不是在语法中创建解析器规则来捕获它们<>以便您可以在它们发生时对其进行翻译?

解析器规则如下所示:

lessThan
    : '<'
    ;

greaterThan
    : '>'
    ;

那时,您将拥有每个术语的特定访问者,并且可以随意翻译它们。

于 2013-07-19T15:52:13.770 回答