我正在尝试编写一个使用StringTemplate生成HTML输出的Antlr3语法。为了避免必须转义模板规则中的所有HTML标记(例如 \<p\><variable>\</p\> ,我希望使用dollar作为StringTemplate的分隔符(例如 <p>$variable$</p> )
\<p\><variable>\</p\>
<p>$variable$</p>
当单独使用StringTemplate时,后者似乎是默认的,但由Antrl生成的解析器代码总是使用 AngleBracketTemplateLexer 初始化StringTemplate时。
AngleBracketTemplateLexer
如何让Antlr使用 DefaultTemplateLexer (即使用美元作为分隔符的变量)?
DefaultTemplateLexer
尝试设置 DefaultTemplateLexer.class 在 StringTemplateGroup 这样地:
DefaultTemplateLexer.class
StringTemplateGroup
StringTemplateGroup group = new StringTemplateGroup(reader, DefaultTemplateLexer.class);