gpt4 book ai didi

parsing - ANTLR : Get text representation of a sub lexer rule

转载 作者:行者123 更新时间:2023-12-04 04:59:10 24 4
gpt4 key购买 nike

考虑 ANTLR4 中的以下词法分析器规则:

ID: [a-z]+;
INT: [0-9]+;
ARRAY: ID '[' INT ']';

在我可以访问 ctx.ARRAY() 的树行走场景中是否有可能? (其中 ctx 是由解析器规则生成的 ParserRuleContext 的子类)以获取词法分析器规则 ID 的文本表示和 INT ?
我目前使用 ctx.ARRAY().getText() 获取整个文本表示并解析 ID 的内容和 INT使用正则表达式,只是想知道 ANTLR 是否提供了“更清洁”的开箱即用解决方案。

注意:由于外部依赖使得 ARRAY解析器规则不是一个选项。

预先感谢您提供有意义的答案。

最佳答案

ANTLR 4 中的词法分析器规则不能分解成多个部分。这是我们做出的一个设计决策,作为 ANTLR 4 词法分析器相对于 ANTLR 3 词法分析器的大量速度和内存改进的一部分。 ANTLR 3 词法分析器是递归下降识别器,具有许多与解析器相同的功能。在 ANTLR 4 中,词法分析器只不过是支持语义谓词的 DFA 识别器,因此根本不会跟踪标记的各个组件之间的边界。

你要么做 ARRAY一个解析器规则,或者单独解析getText()的结果当您需要拆分 token 的文本时。

关于parsing - ANTLR : Get text representation of a sub lexer rule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16354912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com