我使用'visitor'模式从我的解析代码生成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'的类,以替换像'&lt;'这样的字符。或'&gt;'用他们的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);
}
.....
}
感谢您的帮助! 亲切的问候,狼
答案 0 :(得分:0)
你有没有理由扩展这个类,而不是在你的语法中创建一个解析器规则来捕获<
和>
,以便你可以在它们发生时进行翻译?
解析器规则看起来像:
lessThan
: '<'
;
greaterThan
: '>'
;
此时,您将拥有每个条款的特定访问者,并可以按照您的意愿进行翻译。