signature TRANSLATE = sig type level type access (* not the same as Frame.access *) datatype exp = Ex of Tree.exp | Nx of Tree.stm | Cx of Temp.label * Temp.label -> Tree.stm structure F : FRAME val outermost : level val newLevel : {parent: level, name: Temp.label, formals: bool list} -> level val formals: level -> access list val allocLocal: level -> bool ->access val procEntryExit : {level: level, body: exp} -> unit val getResult : unit -> F.frag list val printResult : unit -> unit val levelname : level -> string val printLevel : level -> unit val simpleVar : access * level -> exp val transArithOp : (Absyn.oper * exp * exp) -> exp val transComparisonOp : (Absyn.oper * exp * exp) -> exp val transIntValue : int -> exp val transStringValue : string -> exp val transNilValue : unit -> exp val transSeqExp: exp list -> exp val transIfExp : (exp * exp * exp) -> exp val transWhileExp : (exp * exp * Temp.label) -> exp val transBreakExp : (Temp.label) -> exp val transForExp : (exp * exp * exp) -> exp val transAssignExp : (exp * exp) -> exp val transVarInit : (access * exp) -> exp val transCallExp : (Temp.label * level * level * exp list) -> exp val transArrayExp : (exp * exp) -> exp val transRecordExp : (exp * exp list) -> exp val transSubscriptVarExp : (exp * exp) -> exp val transFieldVarExp : (exp * exp) -> exp end