# 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