Я хотел бы предварить это, заявив, что это для класса, поэтому, пожалуйста, не решайте это для меня.
Одна из моих лабораторий для моего класса 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();
...
Но это дало мне ту же ошибку. Мне нужно, чтобы дерево разбора было построено, чтобы я мог сделать красивую печать и выполнить команду, но, как я уже сказал, я получаю только левую ветвь.
Любая помощь будет оценена. Пояснения, почему они так ценятся.
Спасибо,
Васт