あるタイプのDSL用にJJTree(JavaCC)構成を作成しましたが、これは特定の形式のファイルを正常にトークン化し、要求されたときにASTをダンプします。
問題は、現在トークンを保存していないため、ツリー内の各ノードが空であるということです(例を理解できません)。
これが私の.jjtファイルの一部です:
SimpleNode Start() #Root : {} {
(
( Section1() )?
( Section2() )?
( Section3() )*
) {
return jjtThis;
}
}
void Section3() #Section3 : {}
{
< SECTION_3 > Identifier() <LBRACE >
Header()
(Details() < SEMICOLON > )*
< RBRACE >
}
ルートノードにSection1、Section2への参照とSection3への参照のリストを保存したいと思います。Section3ノードに識別子とヘッダーブロックを保存し、詳細ブロックのリストを保持してほしい。
私のfill.jjtファイルは数百行ですが、これら2つのセクションで理解できれば、JJTreeがどのように機能するかを理解できると思います。JJTreeの使い方を教えてください。
ありがとう。