about summary refs log tree commit diff
path: root/boot/tests/parse/loops.cskt
diff options
context:
space:
mode:
Diffstat (limited to 'boot/tests/parse/loops.cskt')
-rw-r--r--boot/tests/parse/loops.cskt31
1 files changed, 31 insertions, 0 deletions
diff --git a/boot/tests/parse/loops.cskt b/boot/tests/parse/loops.cskt
new file mode 100644
index 0000000..45b1040
--- /dev/null
+++ b/boot/tests/parse/loops.cskt
@@ -0,0 +1,31 @@
+looping structures!
+
+<<<
+
+for i uint = 0..10 {
+  print(i)
+}
+
+for x uint = 0, x < 10, x++ {
+  print(r)
+}
+
+var y uint = 0
+while y < 10 {
+  print(y)
+  y++
+}
+
+>>>
+
+(loop for-each (declaration i (type name uint) (initializer (expr (binary .. (expr 0) (expr 10))))) (block
+	(expr (call (expr (name print)) (arg (expr (name i)))))
+))
+(loop c-style (declaration x (type name uint) (initializer (expr 0))) (condition (expr (binary < (expr (name x)) (expr 10)))) (iteration (expr (increment/decrement ++ postfix (expr (name x))))) (block
+	(expr (call (expr (name print)) (arg (expr (name r)))))
+))
+(variable (declaration y (type name uint) (initializer (expr 0))))
+(loop while (condition (expr (binary < (expr (name y)) (expr 10)))) (block
+	(expr (call (expr (name print)) (arg (expr (name y)))))
+	(expr (increment/decrement ++ postfix (expr (name y))))
+))
\ No newline at end of file