Antlr 解析G4文件以生成文档/架构

Antlr 解析G4文件以生成文档/架构,antlr,antlr4,Antlr,Antlr4,我意识到这个问题有点复杂,但我本质上想解析一个ANTLR4语法(一个实际的.g4文件),然后根据语法生成文档和其他工件(不是语法实例) 例如,考虑包含这个规则: compilationUnit : packageDeclaration? importDeclaration* typeDeclaration* EOF ; 我希望能够解析Java.g4文件,并生成说明“编译单元包含可选的packageDeclaration、0个或多个importDeclarations和0个或多个typeDe

我意识到这个问题有点复杂,但我本质上想解析一个ANTLR4语法(一个实际的.g4文件),然后根据语法生成文档和其他工件(不是语法实例)

例如,考虑包含这个规则:

compilationUnit
:   packageDeclaration? importDeclaration* typeDeclaration* EOF
;
我希望能够解析Java.g4文件,并生成说明“编译单元包含可选的packageDeclaration、0个或多个importDeclarations和0个或多个typeDeclarations”的文档。或者,我希望生成一个XSD,其数据类型为“compileationunit”,其中包含“packageDeclaration”、“importDeclaration”和“typeDeclaration”元素(具有适当的基数集)

完成这样的事情最好的方法是什么?是创建一个目标(即使目标不是创建lexer/parser),还是使用来解析g4文件,还是其他什么


谢谢

这将是ANTLR的一个非常典型的用法,并且考虑到现有的ANTLR 4语法,它非常方便

我认为ANTLR的典型用法是解析符合语法的文件,而不是解析语法(g4)文件本身。例如,一个典型的用法是使用Java.g4来解析Java文件——但我想要的是直接解析Java.g4。我可以使用一个ANTLR语法示例,但它实际上不是Antl4项目的一部分,所以我不确定它的有效性。您是否知道一个官方g4文件表示用于定义语法的实际ANTLR4语法?
github.com/antlr/grammars-v4
中的ANTLR4语法完全符合antlr 4.5。我广泛地使用它来分析其他Antlr语法——它被用作AntlrDT的基础,EclipseAntlR语法编辑器。非常感谢你!那么我也会采取同样的方法!