Antlr4 从自己的类继承,而不是从XMLParserRuleContext继承
我正在使用“访问者”模式从解析的代码生成XML。在典型的上下文中,类如下所示:Antlr4 从自己的类继承,而不是从XMLParserRuleContext继承,antlr4,Antlr4,我正在使用“访问者”模式从解析的代码生成XML。在典型的上下文中,类如下所示: public static class On_dtmContext extends ParserRuleContext { public List<FieldContext> field() { return getRuleContexts(FieldContext.class); } public TerminalNode ON() { return getTok
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);
}
.....
}
\u dtmContext上的公共静态类扩展了ParserRuleContext{
公共列表字段(){
返回getRuleContexts(FieldContext.class);
}
上的公共终端节点({return getToken(SRC_REP_SCREENParser.ON,0);}
标题上的公共内容标题上的上下文(){
返回getRuleContext(在\u dtm\u 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);
}
.....
}
\u dtmContext上的公共静态类扩展了xmlparserulecontext{
公共列表字段(){
返回getRuleContexts(FieldContext.class);
}
上的公共终端节点({return getToken(SRC_REP_SCREENParser.ON,0);}
标题上的公共内容标题上的上下文(){
返回getRuleContext(在\u dtm\u headerContext.class上,0);
}
.....
}
谢谢你的帮助!
您好,wolf您是否有理由尝试扩展该类,而不是在语法中创建解析器规则来捕获
,以便在发生时进行翻译
解析器规则类似于:
lessThan
: '<'
;
greaterThan
: '>'
;
lessThan
: ''
;
在这一点上,你会有特定的访客为每一个这些条款,并可以翻译他们,因为你会