import AST
-testProg :: Statement
-testProg = Seq (Assign "x" (Const (I 0))) loop
+-- | Infinitely increments and prints x (can't be written to a file sadly)
+increment :: Statement
+increment = Seq (Assign "x" (Const (I 0))) loop
where loop = Seq (Print (Var "x"))
(Seq (Assign "x" (Add (Var "x") (Const (I 1))))
loop)
-testTry :: Statement
-testTry = Try (Print (Add (Const (I 3)) (Const (B True))))
+
+-- | Catches a type error and prints 0
+tryCatch :: Statement
+tryCatch = Try (Print (Add (Const (I 3)) (Const (B True))))
(Print (Const (I 0)))
+
+-- | Calculates nth fibonacci (5 by default) and stores result in 'x'
+fibonacci :: Statement
+fibonacci = Seq (Assign "n" (Const (I 5)))
+ (Seq (Assign "x" (Const (I 1)))
+ (Seq (Assign "y" (Const (I 0)))
+ (While (Gt (Var "n") (Const (I 0)))
+ (Seq (Assign "tmp" (Var "x"))
+ (Seq (Assign "x" (Add (Var "x") (Var "y")))
+ (Seq (Assign "y" (Var "x"))
+ (Assign "n" (Sub (Var "n") (Const (I 1))))))))))