我应该在哪里初始化OO递归下降解析树的变量?

时间:2010-05-21 04:17:26

标签: java recursion parsing

我想通过声明这是针对一个班级来做序,所以请不要为我解决这个问题。

我的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();
}

现在这是My 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();
    ...

但它给了我同样的错误。我需要构建解析树,所以我可以做一个漂亮的打印和执行命令,但就像我说的,我只得到左分支。

任何帮助将不胜感激。解释为什么更加如此欣赏。

谢谢你, 瓦斯托

1 个答案:

答案 0 :(得分:0)

原来我的问题出在DeclSeq和StmtSeq。

我在while循环中声明变量,从而在循环退出后丢失它们。 DOH

相关问题