Java JJTree中的SimpleNode子级

Java JJTree中的SimpleNode子级,java,compiler-construction,javacc,Java,Compiler Construction,Javacc,我在一篇教程中读到,当你这样做时: SimpleNode Program() #Program : {} { (Class_decl())* <EOF> { return jjtThis; } } SimpleNode程序()#程序:{} { (Class_decl())* {返回jjthis;} } 它应该创建一个从SimpleNode继承的Programm类(一旦使用jjtree编译),但在我的情况下,它不会创建类。是我自己创造的还是我遗漏了什么 谢谢您是

我在一篇教程中读到,当你这样做时:

SimpleNode Program() #Program : {} 
{
    (Class_decl())* <EOF>

    { return jjtThis; }
}
SimpleNode程序()#程序:{}
{
(Class_decl())*
{返回jjthis;}
}
它应该创建一个从SimpleNode继承的Programm类(一旦使用jjtree编译),但在我的情况下,它不会创建类。是我自己创造的还是我遗漏了什么


谢谢

您是第一次在语法中使用
jjtree
(在
javacc
之前)吗?这对我来说很好:

文件:Test.jjt
选项{
多=真;
节点_前缀=”;
}
解析器_开始(测试)
公开课考试{
公共静态void main(字符串[]args)引发异常{
测试解析器=新测试(新java.io.StringReader(“类A;类B;”);
SimpleNode root=parser.Program();
root.dump(“”);
}
}
解析器_结束(测试)
代币:
{

|
|
}
跳过:
{
“|”\t“|”\r“|”\n”
}
SimpleNode程序()#程序:
{} 
{
(Class_decl())*{return jjthis;}
}
void Class_decl()#ClassDecl:
{}
{    
}
然后是命令:

jjtree Test.jjt
javacc Test.jj
它生成以下Java源文件:

ClassDecl.java
JJTTestState.java
Node.java
Program.java
SimpleNode.java
TestTreeConstants.java
以及
ClassDecl
Program
扩展
SimpleNode

/*生成人:JJTree:请勿编辑此行。Program.java版本4.3*/
/*javacOptions:MULTI=true,NODE\u USES\u PARSER=false,VISITOR=false,TRACK\u TOKENS=false,NODE\u PREFIX=,NODE\u EXTENDS=,NODE\u FACTORY=,SUPPORT\u CLASS\u VISIBILITY\u PUBLIC=true*/
公众的
类程序扩展了SimpleNode{
...
}
/*生成人:JJTree:请勿编辑此行。ClassDecl.java版本4.3*/
/*javacOptions:MULTI=true,NODE\u USES\u PARSER=false,VISITOR=false,TRACK\u TOKENS=false,NODE\u PREFIX=,NODE\u EXTENDS=,NODE\u FACTORY=,SUPPORT\u CLASS\u VISIBILITY\u PUBLIC=true*/
公众的
类ClassDecl扩展了SimpleNode{
...
}
编译所有源文件并运行
测试
类:

javac-cp.*。JAVA
java-cp。试验
将打印:

程序
ClassDecl
ClassDecl
(即,
Program
是具有两个子类的根)


使用Java编译器5.0版进行测试。

是的,我也有同样的想法,但我知道
jjtree
命令将创建
程序
ClassDecl
类,这些类将继承自
SimpleNode
,我误解了吗?@TrexXx,抱歉,我无意中没有在
jjt
文件的开头发布
选项
。。。请参阅我编辑的答案。