我为一种 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 节点存储标识符、标题块并保留详细信息块的列表。
我填充的.jjt 文件有数百行,但我觉得如果我能理解这两部分的内容,我就能理解JJTree 是如何工作的。请让我知道如何正确使用 JJTree。
谢谢。