Program( [ Declaration("n") , Assign("n", FunCall("readint", [])) , Declaration("x") , Declaration("fact") , Assign("fact", Int("1")) , For( "x" , Int("1") , Var("n") , [Assign("fact", Mul(Var("x"), Var("fact")))] ) , ProcCall("write", [String("\"factorial of \"")]) , ProcCall("writeint", [Var("n")]) , ProcCall("write", [String("\" is \"")]) , ProcCall("writeint", [Var("fact")]) , ProcCall("write", [String("\"\\n\"")]) ] )