【问题标题】:How to code grammar or lexer rule to describe JSP/EL identifier or string literal in ANTLR?如何编写语法或词法分析器规则来描述 ANTLR 中的 JSP/EL 标识符或字符串文字?
【发布时间】:2013-05-13 05:18:12
【问题描述】:

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

【问题讨论】:

    标签: antlr grammar antlr4


    【解决方案1】:

    查看新的“词汇模式”:

    词法模式

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

    -- http://www.antlr.org/wiki/display/ANTLR4/Lexer+Rules

    【讨论】:

    • 哦不!为什么不直接删除词法分析器并让解析器完成所有工作?无论如何,谢谢。
    • @SuzanCioc,这不是 ANTLR 的工作方式。在这种情况下,您正在寻找的是PEG。我听说过关于parboiled 的好消息。
    • PEG 看起来是一个概念。有没有使用 PEG 的工具,比如 ANTLR? ANTLR 在您的页面上被列为支持 PEG。
    • 我在之前的评论中提供了一个链接。不,ANTLR 并不是真正的 PEG(在词法分析器和解析器之间有 严格分离)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2019-05-07
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多