私はDSLのタイプのJJTree(JavaCC)設定を書いており、指定されたフォーマットのファイルを正しくトークン化し、要求されたときにASTをダンプします。JavaCC/JJTreeを使用してトークンを格納するにはどうすればよいですか?
問題は、現在トークンを格納していないため、ツリー内の各ノードが空であることです(例はわかりません)。ここで
は私.jjtファイルの一部です:
SimpleNode Start() #Root : {} {
(
(Section1())?
(Section2())?
(Section3())*
) {
return jjtThis;
}
}
void Section3() #Section3 : {}
{
<SECTION_3> Identifier() <LBRACE >
Header()
(Details() <SEMICOLON>)*
<RBRACE>
}
私はセクション1、2節とSECTION3への参照のリストへの参照を格納するために、ルートノードをしたいと思います。私はSection3ノードに識別子、ヘッダブロックを保存し、詳細ブロックのリストを保持したいと思います。
私の埋め込み.jjtファイルは数百行にもなりますが、この2つのセクションで理解できれば、JJTreeの動作を理解できます。 JJTreeの使い方を教えてください。
ありがとうございました。
感謝を助けることができるはずです。可能であれば、カスタムノードクラスを定義せずにこのサンプルを処理する方法を教えてください(既存のJJTreeで定義されたノードタイプでカスタムトークンを保存するフィールドを追加するにはどうすればよいですか)。つまり、最初の段落で説明した方法の例を挙げてください。 – Chris