summaryrefslogtreecommitdiff
path: root/Switch/switch.b
diff options
context:
space:
mode:
Diffstat (limited to 'Switch/switch.b')
-rw-r--r--Switch/switch.b72
1 files changed, 72 insertions, 0 deletions
diff --git a/Switch/switch.b b/Switch/switch.b
new file mode 100644
index 0000000..a25220c
--- /dev/null
+++ b/Switch/switch.b
@@ -0,0 +1,72 @@
+implement Switch;
+
+include "sys.m";
+include "draw.m";
+
+sys: Sys;
+print, FD: import sys;
+
+Switch: module {
+ init: fn(nil: ref Draw->Context, nil: list of string);
+};
+
+init(nil: ref Draw->Context, nil: list of string) {
+ sys = load Sys Sys->PATH;
+
+ i := 10;
+
+ # The label labelling the enclosing construct
+ loop:
+
+ for(; i >= 0; i--)
+ case i {
+ 0 or 2 or 4 or 6 or 8 or 10 =>
+ print("Even\n");
+ continue loop;
+ * =>
+ print("Odd\n");
+ break loop;
+ }
+
+ print("i's value: %d\n", i);
+
+ c := 'c';
+
+ case c {
+ 'a' to 'f' =>
+ print("Valid hex\n");
+ 'C' =>
+ print("The letter 'C'\n");
+ * =>
+ print("The default\n");
+ }
+
+ str := "ducks";
+
+ case str {
+ "ducks" =>
+ print("Quack!\n");
+ "" =>
+ print("Nil string\n");
+ }
+
+ n := 1;
+
+ case n {
+ 0 or 1 =>
+ print("This is binary\n");
+ * =>
+ print("This is non-binary\n");
+ }
+
+ f := big 6;
+
+ case f {
+ big 4 => print("The number 4\n");
+ big 5 => print("The number 7\n");
+ * =>
+ print("Neither 4 nor 7\n");
+ }
+
+ exit;
+}