home *** CD-ROM | disk | FTP | other *** search
- ############################################################################
- #
- # File: proto.icn
- #
- # Subject: Program to show Icon syntactic forms
- #
- # Author: Ralph E. Griswold
- #
- # Date: June 10, 1988
- #
- ###########################################################################
- #
- # This program doesn't "do" anything. It just contains an example of
- # every syntactic form in Version 7 of Icon (or close to it). It might
- # be useful for checking programs that process Icon programs. Note, however,
- # that it does not contain many combinations of different syntactic forms.
- #
- ############################################################################
- #
- # Program note:
- #
- # This program is divided into procedures to avoid overflow with
- # default values for Icon's translator and linker.
- #
- ############################################################################
- #
- # Links: options
- #
- # Requires: co-expressions
- #
- ############################################################################
-
- link options
-
- record three(x,y,z)
- record zero()
- record one(z)
-
- global line, count
-
- procedure main()
- expr1()
- expr2()
- expr3()
- expr4(1,2)
- expr4{1,2}
- expr5(1,2,3,4)
- end
-
- procedure expr1()
- local x, y, z
- local i, j
- static e1
-
- initial e1 := 0
-
- exit() # get out before there's trouble
-
- ()
- {}
- ();()
- []
- [,]
- x.y
- x[i]
- x[i:j]
- x[i+:j]
- x[i-:j]
- (,,,)
- x(,,,)
- not x
- |x
- !x
- *x
- +x
- -x
- end
-
- procedure expr2()
- local x, i, y, j, c1, c2, s1, s2, a2, k, a1
-
- .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()
- local i, j, c1, c2, s1, s2, a1, a2, x, y, s
-
- 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()
- local e1, e2, e, x, i, j, size, s, e3, X_
-
- 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_
- cde"
- 'abc'
- 'abc_
- cde'
- "\n"
- "^a"
- "\001"
- "\x01"
- 1
- 999999
- 36ra1
- 3.5
- 2.5e4
- 4e-10
- end
-
- procedure expr5(a,b,c[])
- end
-