配置文件Antlr语法

时间:2017-11-05 11:15:08

标签: parsing profiling antlr4

我在这里找到了this question,其中OP要求提供一种分析ANTLTR语法的方法 然而,答案有点令人不满意,因为它仅限于没有动作的语法,更重要的是 - 它是一个自动化的分析(将我看到)使用生成的词法分析器/解析器的默认构造函数来构造它。

我需要分析一个语法, 包含动作,并且必须使用自定义构造函数构造。因此,我需要能够自己实例化词法分析器+解析器,然后对其进行分析 我无法找到有关此主题的任何信息。我知道有一个IntelliJ的探查器,但它的工作方式与链接问题的答案中描述的非常类似(也许它甚至是相同的)。

有谁知道如何根据这种特殊需求来描述我的语法?我不需要任何花哨的GUI。如果我将结果打印到控制台或类似的东西,我会感到满意。

包装起来:我正在搜索工具或提示如何编写一些代码,让我能够分析我的ANTLR语法(使用自我实例化的词法分析器/解析器)。
顺便说一下,我的目标语言是Java,所以我想探查器也必须是Java语言。

1 个答案:

答案 0 :(得分:2)

一个好的开始是将Parser.setProfile()设置为true并检查解析运行后从Parser.getParseInfo()获得的内容。我还没有仔细查看分析结果中详细提供的内容,但是我在我的vscode扩展中为ANTLR4提供了todo列表,以便为语法提供分析信息以帮助改进它们。

从决策信息到特定规则的提示:有一个decision number,它是ATN.decisionToState的索引。您可以获得的DecisionState实例是ATNState后代,可以从中获取ATNState.ruleIndex。然后,规则索引可以与解析器的ruleNames属性一起使用,以查找该规则的名称。该值也是规则枚举条目的用途。