我应该在哪里初始化OO递归下降分析树的变量?
问题描述:
我想通过说明这是为了上课,所以请不要为我解决这个问题。我应该在哪里初始化OO递归下降分析树的变量?
我的cse课程的一个实验室是为所提供的BNF创建一个解释器。我理解了大部分概念,但我试图建立我的树,但我不确定在哪里初始化值。我已经尝试了构造函数和方法,但Eclipse的调试器仍然只显示左分支,即使它完全运行。
这是我的主要程序,所以你可以了解我如何调用方法。
public class Parser {
public static void main(String[] args) throws IOException {
FileTokenizer instance = FileTokenizer.Instance();
FileTokenizer.main(args);
Prog prog = new Prog();
prog.ParseProg();
prog.PrintProg();
prog.ExecProg();
}
现在,这里是我的PROG类:
public class Prog {
private DeclSeq ds;
private StmtSeq ss;
Prog() {
ds = new DeclSeq();
ss = new StmtSeq();
}
public void ParseProg() {
FileTokenizer instance = FileTokenizer.Instance();
instance.skipToken(); //Skips program (1)
// ds = new DeclSeq();
ds.ParseDS();
instance.skipToken(); //Skips begin (2)
// ss = new StmtSeq();
ss.ParseSS();
instance.skipToken();
}
我试过有
Prog() {
ds = null;
ss = null;
}
public void ParseProg() {
FileTokenizer instance = FileTokenizer.Instance();
instance.skipToken(); //Skips program (1)
ds = new DeclSeq();
ds.ParseDS();
...
但它给了我同样的错误。我需要建立一个分析树,以便我可以做一个漂亮的打印和一个执行命令,但就像我说的,我只能得到左分支。
任何帮助,将不胜感激。解释为什么更值得赞赏。
谢谢你,华斯度
答
原来,我的问题是在DeclSeq和StmtSeq。
我在一个while循环中声明变量,因此在循环退出后会丢失它们。 DOH
你能告诉我们'DeclSeq'和'StmtSeq'的来源吗? – tangens 2010-05-21 06:27:51