summaryrefslogtreecommitdiff
path: root/tests/general/proto.icn
diff options
context:
space:
mode:
Diffstat (limited to 'tests/general/proto.icn')
-rw-r--r--tests/general/proto.icn156
1 files changed, 156 insertions, 0 deletions
diff --git a/tests/general/proto.icn b/tests/general/proto.icn
new file mode 100644
index 0000000..94c384b
--- /dev/null
+++ b/tests/general/proto.icn
@@ -0,0 +1,156 @@
+# This program contains samples of all the basic syntactic
+# forms in Icon.
+
+record three(x,y,z)
+record zero()
+record one(z)
+
+global line, count
+
+procedure main()
+end
+procedure expr1(a, b)
+ local x,y,z
+ static e1
+ initial e1 := 0
+ ()
+ {}
+ ();()
+ []
+ [,]
+ x.y
+ x[i]
+ x[i:j]
+ x[i+:j]
+ x[i-:j]
+ (,,,)
+ x(,,,)
+ x!y
+ not x
+ |x
+ !x
+ *x
+ +x
+ -x
+end
+
+procedure expr2(a, b[])
+ .x
+ /x
+ =x
+ ?x
+ \x
+ ~x
+ @x
+ ^x
+ x \ i
+ x @ y
+ i ^ j
+ i * j
+ i / j
+ i % j
+ c1 ** c2
+ i + j
+ i - j
+ c1 ++ c2
+ c1 -- c2
+ s1 || s2
+ a1 ||| a2
+ i < j
+ i <= j
+ i = j
+ i >= j
+ i > j
+ i ~= j
+ s1 << s2
+ s1 == s2
+ s1 >>= s2
+ s1 >> s2
+ s1 ~== s2
+ x === y
+ x ~=== y
+ x | y
+ i to j
+ i to j by k
+ x := y
+ x <- y
+ x :=: y
+ x <-> y
+ i +:= j
+ i -:= j
+ i *:= j
+end
+
+procedure expr3()
+ i /:= j
+ i %:= j
+ i ^:= j
+ i <:= j
+ i <=:= j
+ i =:= j
+ i >=:= j
+ i ~=:= j
+ c1 ++:= c2
+ c1 --:= c2
+ c1 **:= c2
+ s1 ||:= s2
+ s1 <<:= s2
+ s1 <<=:= s2
+ s1 ==:= s2
+ s1 >>=:= s2
+ s1 >>:= s2
+ s1 ~==:= s2
+ s1 ?:= s2
+ a1 |||:= a2
+ x ===:= y
+ x ~===:= y
+ x &:= y
+ x @:= y
+ s ? x
+ x & y
+ create x
+ return
+ return x
+ suspend x
+ suspend x do y
+ fail
+end
+
+procedure expr4()
+ while e1 do break
+ while e1 do break e2
+ while e1 do next
+ case e of {
+ x: fail
+ (i > j) | 1 : return
+ }
+ case size(s) of {
+ 1: 1
+ default: fail
+ }
+ if e1 then e2
+ if e1 then e2 else e3
+ repeat e
+ while e1
+ while e1 do e2
+ until e1
+ until e1 do e2
+ every e1
+ every e1 do e2
+ x
+ X_
+ &cset
+ &null
+ "abc"
+ 'abc'
+ "\n"
+ "^a"
+ "\001"
+ "\x01"
+ 1
+ 999999
+ 36ra1
+ 3.5
+ 2.5e4
+ 4e-10
+end