Parse Successful! [Abstract Syntax] PDefs [DFun Type_int (Id "main") [] [SExp (EApp (Id "printString") [EString "What string? "]),SInit Type_string (Id "s") (EApp (Id "readString") []),SExp (EApp (Id "printString") [EString "How many times? "]),SInit Type_int (Id "k") (EApp (Id "readInt") []),SExp (EApp (Id "printString") [EApp (Id "replicate") [EId (Id "k"),EId (Id "s")]]),SReturnVoid],DFun Type_string (Id "replicate") [ADecl Type_int (Id "k"),ADecl Type_string (Id "s")] [SInit Type_int (Id "i") (EInt 1),SInit Type_string (Id "r") (EId (Id "s")),SWhile (ELt (EId (Id "i")) (EId (Id "k"))) (SBlock [SExp (EAss (EId (Id "r")) (EPlus (EId (Id "s")) (EId (Id "r")))),SExp (EPIncr (EId (Id "i")))]),SReturn (EId (Id "r"))]] [Linearized tree] int main () { printString ("What string? "); string s = readString () ; printString ("How many times? "); int k = readInt () ; printString (replicate (k, s)) ; return ; } string replicate (int k, string s){ int i = 1 ; string r = s ; while (i < k){ r = s + r ; i ++ ; } return r ; }