Parse Succesful! [Abstract Syntax] (PDefs [(DFun Type_int "main" [] [(SExp (EApp "printString" [(EString "What string? ")])), (SInit Type_string "s" (EApp "readString" [])), (SExp (EApp "printString" [(EString "How many times? ")])), (SInit Type_int "k" (EApp "readInt" [])), (SExp (EApp "printString" [(EApp "replicate" [(EId "k"), (EId "s")])])), SReturnVoid]), (DFun Type_string "replicate" [(ADecl Type_int "k"), (ADecl Type_string "s")] [(SInit Type_int "i" (EInt 1)), (SInit Type_string "r" (EId "s")), (SWhile (ELt (EId "i") (EId "k")) (SBlock [(SExp (EAss (EId "r") (EPlus (EId "s") (EId "r")))), (SExp (EPIncr (EId "i")))])), (SReturn (EId "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; }