antlr - 在 ANTRL 重写器语法的 StringTemplate 中使用 $ 作为分隔符

标签 antlr antlr3 stringtemplate

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

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

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

最佳答案

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

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

关于antlr - 在 ANTRL 重写器语法的 StringTemplate 中使用 $ 作为分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202987/

相关文章:

java - 如何从 Web 存档的 WEB-INF 目录加载 StringTemplateGroups

python - 这个示例 ANTLR 3 Python 语法有什么问题?

ANTLR如何使用以相同的开头的词法分析器规则?

java - 与 Velocity 和 Mvel 相比,Stringtemplate 性能较低

java - 如何使用 ANTLR v3 构建日期/小时语法?

ant - 如何使用ant为antlr3生成的类添加包声明?

javascript - Angular - 创建 JSON 对象来存储与每个路由关联的数据

javascript - 在 Angular 项目中包含 antlr4 的问题

parsing - 带有字符串文字的 ANTLR 解析器规则

antlr - 如何使用 ANTLRWorks 创建/指定用于测试树语法的 AST 输入?