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

发布于 2024-08-20 20:16:32 字数 397 浏览 3 评论 0原文

我正在尝试编写一个使用 StringTemplate 生成 HTML 输出的 ANTLR3 语法。为了避免必须转义模板规则中的所有 HTML 标记(例如 \

\

),我更喜欢使用美元作为 StringTemplate 的分隔符(例如

$variable$

)。

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

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

I'm trying to write an ANTLR3 grammar that generates HTML output using StringTemplate. To avoid having to escape all the HTML tags in the template rules (e.g. \<p\><variable>\</p\>), I'd prefer to use dollar as the delimiter for StringTemplate (e.g. <p>$variable$</p>).

While the latter seems to be the default when StringTemplate is used on its own, the parser code generated by ANTRL always uses AngleBracketTemplateLexer when initializing StringTemplate.

How can I get ANTLR to generate code using DefaultTemplateLexer (i.e. the variant that uses dollar as the delimiter)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

卸妝后依然美 2024-08-27 20:16:32

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

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

Try setting the DefaultTemplateLexer.class in the StringTemplateGroup like this:

StringTemplateGroup group = new StringTemplateGroup(reader, 
                                                    DefaultTemplateLexer.class);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文