我已经为一种类型的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>
}
我想存储SECTION1,第2节和为Section3引用列表的引用根节点。我希望Section3节点存储标识符,标题块并保留详细信息块的列表。
我的fill .jjt文件是数百行,但我觉得如果我能理解这两个部分,那么我就能理解JJTree是如何工作的。请让我知道如何正确使用JJTree。
谢谢。
感谢您的信息。如果可能的话,你可以告诉我如何处理这个例子而不定义自定义节点类(如何添加字段来将自定义标记保存在已有的JJTree定义的节点类型中)?那就是 - 举一个你在第一段中解释的方法的例子。 – Chris 2010-11-23 17:38:12