如何从令牌值到词法分析器规则?



到目前为止,我相信标记值(由词法分析器规则生成(与该规则的规则索引相同。显然,情况并非如此,正如您在查看生成的代码中的ruleNamesliteral/display names字段时所看到的那样。与显示名称(仅是令牌值的字符串表示形式(相比,规则名称的顺序部分不同,并且还包含片段规则等内容。另一方面,没有虚拟令牌的条目(如tokens部分中定义(。

现在,当您想从令牌值获取规则索引时,您将如何做到这一点?我能想象的唯一方法是从词汇表中获取符号名称(即规则名称(,然后在规则名称数组中查找它。但这似乎有点奇怪。应该有更直接的方法。知道吗?

其他信息:当您想要从解析器规则开始遍历 ATN 时,需要查找。词法分析器令牌存储为过渡标签,这就是它们的来源。为了继续在词法分析器ATN中行走,您需要正确的规则索引。

一般来说,这是不可能的。词法分析器规则可以返回与规则名称根本不对应的令牌。因此,代币和产生它们的规则之间没有可靠的关系(通常匹配,但并非总是如此(。

相关内容

最新更新