在ANTLR重写语法的字符串模板中使用$作为分隔符

时间:2010-02-04 20:34:31

标签: antlr antlr3 stringtemplate

我正在尝试编写一个使用StringTemplate生成HTML输出的ANTLR3语法。为了避免必须转义模板规则中的所有HTML标记(例如\<p\><variable>\</p\>),我更倾向于使用dollar作为StringTemplate的分隔符(例如<p>$variable$</p>)。

虽然后者在使用StringTemplate时似乎是默认值,但ANTRL生成的解析器代码在初始化StringTemplate时始终使用AngleBracketTemplateLexer

如何让ANTLR使用DefaultTemplateLexer生成代码(即使用美元作为分隔符的变体)?

1 个答案:

答案 0 :(得分:3)

尝试设置DefaultTemplateLexer.class中的StringTemplateGroup,如下所示:

StringTemplateGroup group = new StringTemplateGroup(reader, 
                                                    DefaultTemplateLexer.class);