我如何从 ANTLR4 语法中检测死产生式?
How can I detect dead productions from an ANTLR4 grammar?
我有一个 ANTLR4 语法,其中包含大量我不想使用的作品。我想从语法文件中清除它们。 ANTLR4 似乎不允许您指定 "goal" 符号,但如果可以的话,我想识别并删除任何无法从该目标符号到达的作品。
有没有办法识别这些未使用的产生式,以便我可以将它们从语法文件中删除?
ANTLR 本身没有这样的功能。但是,IntelliJ 的 ANTLR 插件在未使用产品时发出警告:
使用 Visual Studio 代码和我的 antlr4-vscode 扩展并启用代码镜头(首选项:antlr4.referencesCodeLens.enabled
)。它将为您提供每个规则的引用计数:
或者您可以直接从底层 antlr4-graps library in a node shell. More API details in the API doc file.
运行 AntlrLanguageSupport.countReferences(fileName, symbol)
我有一个 ANTLR4 语法,其中包含大量我不想使用的作品。我想从语法文件中清除它们。 ANTLR4 似乎不允许您指定 "goal" 符号,但如果可以的话,我想识别并删除任何无法从该目标符号到达的作品。
有没有办法识别这些未使用的产生式,以便我可以将它们从语法文件中删除?
ANTLR 本身没有这样的功能。但是,IntelliJ 的 ANTLR 插件在未使用产品时发出警告:
使用 Visual Studio 代码和我的 antlr4-vscode 扩展并启用代码镜头(首选项:antlr4.referencesCodeLens.enabled
)。它将为您提供每个规则的引用计数:
或者您可以直接从底层 antlr4-graps library in a node shell. More API details in the API doc file.
运行AntlrLanguageSupport.countReferences(fileName, symbol)