in simple.c Token : Package Token : Id Token : Is Token : Body Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop After : CreateIdList Semstack is: IdListEntry <+ SemTop Token : Commasym Token : Id After : PushId Semstack is: IdEntry (j) <+ SemTop IdListEntry After : MergeIdList Semstack is: IdListEntry <+ SemTop Token : Colonsym Token : Id After : PushId Semstack is: IdEntry (integer) <+ SemTop IdListEntry After : MakeTypeEntry Semstack is: TypekindEntry (integer) <+ SemTop IdListEntry Token : Termsym After : EnterIdList Semstack is: EMPTY Symbol table dump: variable name: i type: integer is used: 0 is initialized: 0 variable name: integer type: integer is used: 0 is initialized: 0 (This is a datatype entry.) variable name: j type: integer is used: 0 is initialized: 0 Token : Begin After : NullList Semstack is: StLstEntry <+ SemTop Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop StLstEntry Token : Assignop After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop AddrEntry StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry Token : Termsym After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Loop After : Nullname Semstack is: NameEntry (NULL) <+ SemTop StLstEntry After : Nullexpr Semstack is: BexprEntry <+ SemTop NameEntry (NULL) StLstEntry After : openloop Semstack is: BexprEntry <+ SemTop NameEntry (NULL) StLstEntry After : NullList Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (NULL) StLstEntry Token : Writeln Token : Lparen Token : Strconst After : PushString Semstack is: StrconstEntry (simple loop, i=) <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : CreateActParam Semstack is: ParmEntry <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Commasym Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Rparen After : CreateActParam Semstack is: ParmEntry <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : MergeActParam Semstack is: ParmEntry <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : Call Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (NULL) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Assignop After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Plussym After : Operator Semstack is: OperEntry <+ SemTop ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Termsym After : DoArithOp Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (NULL) StLstEntry Token : Exit Token : When After : Nullid Semstack is: IdEntry (NULL) <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop IdEntry (NULL) StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop IdEntry (NULL) StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop IdEntry (NULL) StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Eqop Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop ExprEntry IdEntry (NULL) StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop ExprEntry IdEntry (NULL) StLstEntry BexprEntry NameEntry (NULL) StLstEntry Token : Termsym After : IfTest Semstack is: BexprEntry <+ SemTop IdEntry (NULL) StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : MakeExit Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (NULL) StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (NULL) StLstEntry Token : End Token : Loop After : closeloop Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (NULL) StLstEntry After : MakeLoop Semstack is: StmtEntry <+ SemTop StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Writeln Token : Lparen Token : Strconst After : PushString Semstack is: StrconstEntry () <+ SemTop StLstEntry After : CreateActParam Semstack is: ParmEntry <+ SemTop StLstEntry Token : Rparen After : Call Semstack is: StmtEntry <+ SemTop StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop StLstEntry Token : Assignop After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop AddrEntry StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry Token : Termsym After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Id After : PushId Semstack is: IdEntry (myName1) <+ SemTop StLstEntry Token : Colonsym After : insertloopname Semstack is: NameEntry (myName1) <+ SemTop StLstEntry Token : Loop After : Nullexpr Semstack is: BexprEntry <+ SemTop NameEntry (myName1) StLstEntry After : openloop Semstack is: BexprEntry <+ SemTop NameEntry (myName1) StLstEntry After : NullList Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName1) StLstEntry Token : Writeln Token : Lparen Token : Strconst After : PushString Semstack is: StrconstEntry (loop with name exit with loopname and when condition, i=) <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : CreateActParam Semstack is: ParmEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Commasym Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Rparen After : CreateActParam Semstack is: ParmEntry <+ SemTop ParmEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : MergeActParam Semstack is: ParmEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : Call Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName1) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Assignop After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Plussym After : Operator Semstack is: OperEntry <+ SemTop ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Termsym After : DoArithOp Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName1) StLstEntry Token : Exit Token : Id After : PushId Semstack is: IdEntry (myName1) <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : When Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop IdEntry (myName1) StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop IdEntry (myName1) StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop IdEntry (myName1) StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Eqop Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop ExprEntry IdEntry (myName1) StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop ExprEntry IdEntry (myName1) StLstEntry BexprEntry NameEntry (myName1) StLstEntry Token : Termsym After : IfTest Semstack is: BexprEntry <+ SemTop IdEntry (myName1) StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : MakeExit Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName1) StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName1) StLstEntry Token : End Token : Loop After : closeloop Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName1) StLstEntry After : MakeLoop Semstack is: StmtEntry <+ SemTop StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop StLstEntry Token : Assignop After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop AddrEntry StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry Token : Termsym After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Id After : PushId Semstack is: IdEntry (myName2) <+ SemTop StLstEntry Token : Colonsym After : insertloopname Semstack is: NameEntry (myName2) <+ SemTop StLstEntry Token : While Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop NameEntry (myName2) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop NameEntry (myName2) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop NameEntry (myName2) StLstEntry Token : Eqop Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop ExprEntry NameEntry (myName2) StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop ExprEntry NameEntry (myName2) StLstEntry Token : Loop After : IfTest Semstack is: BexprEntry <+ SemTop NameEntry (myName2) StLstEntry After : openloop Semstack is: BexprEntry <+ SemTop NameEntry (myName2) StLstEntry After : NullList Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName2) StLstEntry Token : Writeln Token : Lparen Token : Strconst After : PushString Semstack is: StrconstEntry (loop with name and while) <+ SemTop StLstEntry BexprEntry NameEntry (myName2) StLstEntry After : CreateActParam Semstack is: ParmEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Rparen After : Call Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName2) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Assignop After : IdToAddr Semstack is: AddrEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Id After : PushId Semstack is: IdEntry (i) <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry After : IdToAddr Semstack is: AddrEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry After : AddrToPrimary Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Plussym After : Operator Semstack is: OperEntry <+ SemTop ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Iconst After : PushInt Semstack is: IconstEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry After : IconstReduce Semstack is: ExprEntry <+ SemTop OperEntry ExprEntry AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry Token : Termsym After : DoArithOp Semstack is: ExprEntry <+ SemTop AddrEntry StLstEntry BexprEntry NameEntry (myName2) StLstEntry After : Assign Semstack is: StmtEntry <+ SemTop StLstEntry BexprEntry NameEntry (myName2) StLstEntry After : MergeStmts Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName2) StLstEntry Token : End Token : Loop After : closeloop Semstack is: StLstEntry <+ SemTop BexprEntry NameEntry (myName2) StLstEntry After : MakeLoop Semstack is: StmtEntry <+ SemTop StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : Writeln Token : Lparen Token : Strconst After : PushString Semstack is: StrconstEntry (finished) <+ SemTop StLstEntry After : CreateActParam Semstack is: ParmEntry <+ SemTop StLstEntry Token : Rparen After : Call Semstack is: StmtEntry <+ SemTop StLstEntry Token : Termsym After : MergeStmts Semstack is: StLstEntry <+ SemTop Token : End Token : Termsym After : Done Semstack is: EMPTY From codegen.c - DisplayRegs() marks used registers Register: 0 1 2 3 4 5 6 7 8 9 - - - - - - - - - - Used = x: COMPILATION COMPLETE out simple.c