当前位置: 首页 > 知识库问答 >
问题:

如何编写语法或词法规则来描述ANTLR中的JSP/EL标识符或字符串文字?

夏立果
2023-03-14

如何编写语法或lexer规则来描述ANTLR中的JSP/EL标识符或字符串文字?请记住,JSP/EL是Unicode,您不能在规则中列出所有可能的符号。还要记住,字符串可能包含EL表达式,这可能很复杂,因此lexer不足以描述它们,需要解析器,而ANTLR解析器无法匹配字符类或任何字符。

共有1个答案

曾飞沉
2023-03-14

查看新的“词汇模式”:

模式允许您按上下文对词汇规则进行分组,例如XML标记的内部和外部。这就像有多个转租人,一个用于上下文。lexer只能通过在当前模式下输入规则来返回匹配的令牌。lexer以所谓的默认模式启动。除非指定mode命令,否则所有规则都被视为在默认模式内。组合语法中不允许使用模式,只允许使用lexer语法。

-- http://www.antlr.org/wiki/display/ANTLR4/Lexer规则

 类似资料:
  • 本文向大家介绍ANTLR 隐式词法规则,包括了ANTLR 隐式词法规则的使用技巧和注意事项,需要的朋友参考一下 示例 当'{'在解析器规则中使用like标记时,将为它们创建隐式词法分析器规则,除非存在显式规则。 换句话说,如果您有词法分析器规则: 然后,这两个解析器规则都是等效的: 但是,如果OPEN_BRACE是词法规则没有定义,一个隐含的匿名规则将被创建。在这种情况下,隐含的规则将被定义为,如

  • 查看文档,ANTLR2过去有一种叫做谓词法的东西,下面的例子是这样的(灵感来自Pascal): 在我看来,这实际上是规则开头的一个积极的前瞻性断言:如果前瞻性与匹配,那么第一个规则将被应用(并与该输入的部分匹配),依此类推。 我还没有在ANTLR4中找到这样的东西。2到3迁移指南似乎没有提到这一点,而3到4更改文档指出: ANTLR3和4之间最大的区别是ANTLR4接受您给出的任何语法,除非该语法

  • 我试图让一个语句起作用,但由于某些原因,它不起作用。应该很简单。 假设字符串 我的代码是: 两种规格的结果都是1。

  • 问题内容: 我正在用golang开发玩具解析器,只是为了学习语言。我添加了一个包含语法的测试案例,涉及以下案例: 总是紧随其后,反之亦然。 现在解析器中的语法看起来像这样(为了简洁起见,我省略了周围的代码): 哪里 我想这不是描述这种语法的最简洁的方法。如何使其更紧凑? 有关: 为什么递归下降解析器不能处理左递归 编辑: Filip的BNF答案可以用我的语法写成: 问题答案: 您拥有的BNF语法是

  • 问题内容: 并使用EL给出相同的结果来进行我的字符串比较测试: 我应该改用吗?是仅整数?但是它也适用于字符串。AFAIK 测试hashCodes是否相等,并表示“有意义地不同”。 这里没有区别吗?我要说的不是区别:查看hashCode和的实现。 问题答案: 他们都是一样的。我在EL中使用它,因为它像句子一​​样易读。

  • 本节列出了一些通用的规则,Web 容器和开发人员必须注意有关 Web 应用程序部署描述文件的处理。 对于部署描述文件的文本节点元素内容,Web 容器必须删除所有前导和后置空格,空格在XML 1.0“(http://www.w3.org/TR/2000/WD-xml-2e-20000814)中被定义为“S(white space)”。 部署描述文件对模式来说必须是有效的。Web 容器和操作 Web