2016-08-09 6 views
0

を生成するために、G4ファイルの解析、私はこの質問は少しメタで実現するが、私は基本的に、その後に基づいてドキュメントや他のアーティファクトを生成するANTLR4文法(実際.g4ファイル)を解析したいです文法(文法のインスタンスではありません)。のdoc /スキーマ

たとえば、このルールが含まれexample Java grammar考える:私はJava.g4ファイルを解析し、言うのドキュメントを生成することができるようにしたい

compilationUnit 
: packageDeclaration? importDeclaration* typeDeclaration* EOF 
; 

「をcompilationUnitはオプションpackageDeclaration、0以上が含まれていますimportDeclarations、および0以上のtypeDeclarations "を参照してください。あるいは、私は、 "packageDeclaration"、 "importDeclaration"、および "typeDeclaration"要素(適切なカーディナリティセットを持つ)を含む "compilationUnit"というデータ型を持つXSDを生成したいと考えています。

このようなことを達成する最良の方法は何ですか?ターゲットを作成することです(たとえ目標がレクサー/パーサーを作成しない場合でも)か、example antlr4 grammarをg4ファイルの解析に使用するのですか、それとも別のものですか?

ありがとうございます!

答えて

1

これは、ANTLRの非常に典型的な使用であり、既存のANTLR 4文法では便利です。

+0

ANTLRの典型的な使用法は、文法に合致するファイルを解析することです(文法(g4)ファイル自体を解析しない)。たとえば、典型的な使用は、Javaファイルを解析するためにJava.g4を使用することですが、私が望むのはJava.g4を直接解析することです。 私は使用できるANTLR文法の例がありますが、実際にはANTLR4プロジェクトの一部ではありません - どのように有効かは分かりません。あなたは文法を定義するための実際のANTLR4文法を表す公式のg4ファイルを知っていますか? –

+0

'github.com/antlr/grammars-v4'のANTLR4文法は、ANTLR 4.5に完全に準拠しています。私は、Antlrの他の文法を分析するために広範に使用しています。これはEclipse ANTLR文法エディタAntlrDTの基礎として使用されています。 – GRosenberg

+0

どうもありがとうございます!私は同じアプローチをとっていきます! –