public IrFuncList visit(IrFuncList t) { IrFuncList funcs = new IrFuncList(); for (int i = 0; i < t.Count(); i++) { IrFunc s = ((IrFunc)t[i]).accept(this); funcs.Add(s); } return funcs; }
// DECLARATIONS // *** partial implementation, will be fixed in proj2 **** // ClassDeclList --- public IrFuncList visit(AstClassDeclList n) { IrFuncList funcs = new IrFuncList(); for (int i = 0; i < n.Count(); i++) funcs.AddRange(n[i].accept(this)); return funcs; }
public void visit(IrFuncList t) { }
public void visit(IrProg p) { funcs = p.funcs; IrFunc mf = findFunc("main"); if (null == mf) throw new Exception("main function not found"); //sp = sp - mf.varCnt - mf.argCnt - 1; mf.accept(this); //sp = sp + mf.varCnt + mf.argCnt + 1; }
public IrProg(IrFuncList fl) { funcs = fl; }
public IrProg Program() { IrFuncList funcs = new IrFuncList(); IrFunc seg; bool done = false; jj_consume_token(RegExpId.kwPROG); while (!done) { switch ((jj_ntk == RegExpId.UNDEFINED) ? jj_ntk_fn() : jj_ntk) { case RegExpId.ID: seg = FUNC(); funcs.Add(seg); break; default: jj_la1[0] = jj_gen; done=true; break; } } jj_consume_token(0); return new IrProg(funcs); }