void SubProgram(SymbolTable &table) { if (symbol==CONSTTK) ConstDeclaration(table); if (symbol==VARTK) VarDeclaration(table); while (symbol==PROCETK || symbol==FUNCTK) { if (symbol==PROCETK) ProcDeClaration(table); else if (symbol==FUNCTK) FuncDeClaration(table); } if (symbol!=BEGINTK) ErrorHandler("SubProgram should begin with begin"); //Throw Error while define Subprogram, can not find begin tk. if (table.GetKind()==procsk) interResult<<"Proc "; if (table.GetKind()==funcsk) interResult<<"Func "; interResult<<table.GetName(); for (int i=0;i!=ptable;++i) if ((&symbolTableList[i])==&table) { interResult<<' '<<i<<endl; break; } CompoundStatement(table); table.Push(table.GetName(), varsk); table.SetType(table.GetFuncType()); table.FillBack(); }