diff options
Diffstat (limited to 'tests/general/proto.icn')
-rw-r--r-- | tests/general/proto.icn | 156 |
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 |