summaryrefslogtreecommitdiff
path: root/tests/lexers/icon
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexers/icon')
-rw-r--r--tests/lexers/icon/example.txt3352
1 files changed, 3352 insertions, 0 deletions
diff --git a/tests/lexers/icon/example.txt b/tests/lexers/icon/example.txt
new file mode 100644
index 00000000..f9b9122f
--- /dev/null
+++ b/tests/lexers/icon/example.txt
@@ -0,0 +1,3352 @@
+---input---
+############################################################################
+#
+# File: kaleid.icn
+#
+# Subject: Program to produce kaleidoscope
+#
+# Author: Stephen B. Wampler
+#
+# Date: May 2, 2001
+#
+############################################################################
+#
+# This file is in the public domain.
+#
+############################################################################
+#
+# Lots of options, most easily set by with the interface after
+# startup. The only one that isn't set that way is -wn where 'n' is
+# the size of the kaleidoscope window (default is 600 square).
+#
+# Terminology (and options):
+#
+# Window_size (-wN): How big of a display window to use.
+# At the current time, this can only be set via a
+# command line argument.
+#
+# Density (-dN): How many circles per octant to keep on display
+# at any one time. There is NO LIMIT to the density.
+#
+# Duration (-lN): How long to keep drawing circles (measured in
+# in circles) once the density is reached. There is NO LIMIT
+# to the duration.
+#
+# MaxRadius (-MN): Maximum radius of any circle.
+#
+# MinRadius (-mN): Preferred minimum radius. Circles with centers
+# near the edge have their radii forced down to fit entirely
+# on the display
+#
+# MaxOffset (-XN): Maximum offset from center of display (may wrap).
+#
+# MinOffset (-xN): Minimum offset
+#
+# Skew (-sN): Shift probability of placing a circle at a 'typical'
+# offset.
+#
+# Fill (-F): Turns off filling the circles.
+#
+# Clear (-C): After the duration, reduces density back to 0 before
+# quitting.
+#
+# Random Seed: (-rN): Sets the random number seed.
+#
+# Thanks to Jon Lipp for help on using vidgets, and to Mary Camaron
+# for her Interface Builder.
+#
+############################################################################
+#
+# Requires: Version 9 graphics
+#
+############################################################################
+#
+# Links: vidgets, vslider, vtext, vbuttons, vradio, wopen, xcompat
+#
+############################################################################
+
+link vidgets
+link vslider
+link vtext
+link vbuttons
+link vradio
+link wopen
+link xcompat
+
+global Clear, fill, duration, density, maxoff, minoff
+global maxradius, minradius, r_seed, skew, win_size, mid_win
+global root, check1, mainwin, use_dialog
+global draw_circle
+
+global du_v, de_v, rs_v, sk_v
+
+procedure main (args)
+
+ draw_circle := DrawCircle
+
+ init_globs()
+ process_args(args)
+
+ if \use_dialog then { # have vidgets, so use them for args.
+ mainwin := WOpen("label=Kaleidoscope", "width=404", "height=313",
+ "font=6x12") |
+ stop ("bad mainwin")
+ root := ui (mainwin)
+ GetEvents (root, quit)
+ }
+ else { # just rely on command line arguments
+ kaleidoscope(r_seed)
+ }
+
+end
+
+procedure init_globs()
+
+ duration := 500 # set default characteristics
+ density := 30
+ win_size := 600
+ minoff := 1
+ maxradius := 150
+ minradius := 1
+ skew := 1
+ fill := "On"
+ draw_circle := FillCircle
+ Clear := "Off"
+ r_seed := map("HhMmYy", "Hh:Mm:Yy", &clock)
+ # See if the Vidget library is available or not
+ if \VSet then use_dialog := "yes"
+ else use_dialog := &null
+
+end
+
+procedure process_args(args)
+ local arg
+
+ # really only needed if you don't use the dialog box
+ every arg := !args do case arg[1+:2] of {
+ "-w" : win_size := integer(arg[3:0]) # window size
+ "-d" : density := integer(arg[3:0]) # density of circles
+ "-l" : duration := integer(arg[3:0]) # duration
+ "-M" : maxradius := integer(arg[3:0]) # maximum radius
+ "-m" : minradius := integer(arg[3:0]) # minimum radius
+ "-X" : maxoff := integer(arg[3:0]) # maximum offset
+ "-x" : minoff := integer(arg[3:0]) # minimum offset
+ "-s" : skew := numeric(arg[3:0]) # set skewedness
+ "-F" : fill := &null # turn off fill
+ "-C" : Clear := "yes" # turn on clear mode
+ "-r" : r_seed := integer(arg[3:0]) # random seed
+ "-h" : stop("usage: kal [-wn] [-dn] [-ln] [-Mn] [-mn] [-Xn] [-xn] _
+ [-sn] [-F] [-C] [-rn]")
+ }
+ # adjust parameters that depend on the window size...
+ mid_win := win_size/2
+ maxoff := win_size-1
+end
+
+# Lorraine Callahan's kaleidoscope program, translated into icon.
+# (some of the things she did were too sophisticated for me
+# to spend time to figure out, so the output is square instead of
+# round), and I use 'xor' to draw instead of writing to separate
+# bit planes.
+
+global putcircle, clrcircle
+
+procedure kaleidoscope(r)
+ local colors
+
+ # What colors to use? This can be changed to whatever!
+ colors := ["red","green","blue","cyan","magenta","yellow"]
+
+ &window := WOpen("label=Kaleidoscope: 'q' quits", "width="||win_size,
+ "height="||win_size, "bg=black")
+ WAttrib("drawop=xor")
+
+ # Create two *indentical* sequences of circles, one to use when
+ # when drawing, one for erasing. (Since 'xor' is used to
+ # place them, these both just draw the circles!)
+
+ putcircle := create { # draws sequence of circles
+ &random :=: r
+ |{
+ Fg(?colors)
+ outcircle()
+ &random <-> r
+ }
+ }
+
+ clrcircle := create { # erases sequence of circles
+ &random :=: r
+ |{
+ Fg(?colors)
+ outcircle()
+ &random <-> r
+ }
+ }
+
+ every 1 to density do @putcircle # fill screen to density
+
+ every 1 to duration do { # maintain steady state
+ @putcircle
+ @clrcircle
+ if *Pending(&window) > 0 then break
+ }
+
+ every (Clear == "On") & 1 to density do @clrcircle
+
+ close(&window)
+end
+
+
+procedure outcircle() # select a circle at random,
+local radius, xoff, yoff # draw it in kaleidoscopic form
+
+ # get a random center point and radius
+ xoff := (?(maxoff - minoff) + minoff) % mid_win
+ yoff := (?(maxoff - minoff) + minoff) % mid_win
+ radius := ?0 ^ skew
+ # force radius to 'fit'
+ radius := ((maxradius-minradius) * radius + minradius) %
+ (mid_win - ((xoff < yoff)|xoff))
+
+ # put into all 8 octants
+ draw_circle(mid_win+xoff, mid_win+yoff, radius)
+ draw_circle(mid_win+xoff, mid_win-yoff, radius)
+ draw_circle(mid_win-xoff, mid_win+yoff, radius)
+ draw_circle(mid_win-xoff, mid_win-yoff, radius)
+
+ draw_circle(mid_win+yoff, mid_win+xoff, radius)
+ draw_circle(mid_win+yoff, mid_win-xoff, radius)
+ draw_circle(mid_win-yoff, mid_win+xoff, radius)
+ draw_circle(mid_win-yoff, mid_win-xoff, radius)
+
+ return
+end
+
+
+############################################################################
+#
+# Vidget-based user interface -- developed originally using Mary
+# Camaron's XIB program. Don't expect this to be very readable -
+# you should have to play with it!
+#
+############################################################################
+procedure ui (win)
+ local cv1, cv2, cv3, cv4
+ local
+ radio_button2,
+ radio_button1,
+ text_input6,
+ text_input5,
+ slider4,
+ slider3,
+ text_input4,
+ text_input3,
+ slider2,
+ slider1
+
+ /win := WOpen("label=ui", "width=404", "height=313", "font=6x12") |
+ stop ("bad win")
+ root := Vroot_frame (win)
+
+ VInsert (root, Vmessage(win, win_size/2), 168, 98)
+ VInsert (root, Vmessage(win, "1"), 108, 97)
+
+ VInsert (root, sk_v := Vtext(win,"Skew:\\=1",get_skew,,6), 280, 39)
+
+ VInsert (root, du_v := Vtext(win, "Duration:\\="||duration, get_duration,,9),
+ 237, 15)
+
+ VInsert (root, Vmessage(win, "Clear at end?"), 232, 145)
+ VInsert (root, Vmessage(win, "Fill?"), 105, 142)
+ VInsert (root, Vmessage(win,"Quit?"), 267, 259)
+ VInsert (root, Vmessage(win,"Display it?"), 26, 260)
+
+ VInsert (root, Vcheckbox(win, do_quit, "check2",20), 305, 255, 20, 20)
+
+ VInsert (root, check1:=Vcheckbox(win, do_display, "check1",20),
+ 106, 258, 20, 20)
+
+ radio_button2 := Vradio_buttons (win, ["On", "Off"], get_clear, , V_CIRCLE)
+ VSet(radio_button2,Clear)
+ VInsert (root, radio_button2, 253, 165)
+
+ radio_button1 := Vradio_buttons (win, ["On", "Off"], get_fill, , V_CIRCLE)
+ VSet(radio_button1,fill)
+ VInsert (root, radio_button1, 99, 165)
+
+ cv1 := Vcoupler()
+ VAddClient(cv1, get_max_offset)
+ text_input6 := Vtext (win, "Max Offset:\\="||(win_size-1), cv1, , 3)
+ VAddClient(cv1, text_input6)
+ slider4 := Vhoriz_slider (win, cv1, "slider4", 70, 12, 0,
+ win_size-1, win_size-1, )
+ VAddClient(cv1, slider4)
+ VInsert (root, text_input6, 196, 103)
+ VInsert (root, slider4, 306, 106)
+
+ cv2 := Vcoupler()
+ VAddClient(cv2, get_min_offset)
+ text_input5 := Vtext (win, "Min Offset\\=1", cv2, , 3)
+ VAddClient(cv2, text_input5)
+ slider3 := Vhoriz_slider (win, cv2, "slider3", 70, 12, 1, win_size-1, 1, )
+ VAddClient(cv2, slider3)
+ VInsert (root, text_input5, 201, 80)
+ VInsert (root, slider3, 307, 82)
+
+ cv3 := Vcoupler()
+ VAddClient(cv3, get_max_radius)
+ text_input4 := Vtext (win, "Max Radius\\="||(win_size/4), cv3, , 3)
+ VAddClient(cv3, text_input4)
+ slider2 := Vhoriz_slider (win, cv3, "slider2", 70, 12, 1, win_size/2,
+ win_size/4, )
+ VAddClient(cv3, slider2)
+ VInsert (root, text_input4, 10, 104)
+ VInsert (root, slider2, 110, 108)
+
+ cv4 := Vcoupler()
+ VAddClient(cv4, get_min_radius)
+ text_input3 := Vtext (win, "Min Radius\\=1", cv4, , 3)
+ VAddClient(cv4, text_input3)
+ slider1 := Vhoriz_slider (win, cv4, "slider1", 70, 12, 1, win_size/2, 1, )
+ VAddClient(cv4, slider1)
+ VInsert (root, text_input3, 10, 81)
+ VInsert (root, slider1, 110, 84)
+
+ VInsert (root, rs_v := Vtext(win,"Random Seed:\\="||r_seed, get_random,, 11),
+ 30, 41)
+ VInsert (root, de_v := Vtext(win,"Density:\\="||density, get_density,,8),
+ 71, 16)
+
+ VResize (root)
+ return root
+end
+
+procedure get_skew (wit, value)
+ skew := value
+end
+
+procedure get_duration (wit, value)
+ duration := value
+end
+
+procedure do_quit (wit, value)
+ stop()
+end
+
+procedure do_display (wit, value)
+ r_seed := numeric(rs_v.data)
+ duration := integer(du_v.data)
+ density := integer(de_v.data)
+ skew := integer(sk_v.data)
+ kaleidoscope(r_seed)
+ wit.callback.value := &null
+ VDraw(check1)
+end
+
+procedure get_clear (wit, value)
+ Clear := value
+end
+
+procedure get_fill (wit, value)
+ fill := value
+ if fill == "Off" then draw_circle := DrawCircle
+ else draw_circle := FillCircle
+end
+
+procedure get_max_offset (wit, value)
+ maxoff := value
+end
+
+procedure get_min_offset (wit, value)
+ minoff := value
+end
+
+procedure get_max_radius (wit, value)
+ maxradius := value
+end
+
+procedure get_min_radius (wit, value)
+ minradius := value
+end
+
+procedure get_random (wit, value)
+ r_seed := integer(value)
+end
+
+procedure get_density (wit, value)
+ density := integer(value)
+end
+
+procedure quit(e)
+ if e === "q" then stop ("Exiting Kaleidoscope")
+end
+
+---tokens---
+'############################################################################\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# File: kaleid.icn\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Subject: Program to produce kaleidoscope\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Author: Stephen B. Wampler\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Date: May 2, 2001\n' Comment.Single
+
+'#\n' Comment.Single
+
+'############################################################################\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# This file is in the public domain.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'############################################################################\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Lots of options, most easily set by with the interface after\n' Comment.Single
+
+"# startup. The only one that isn't set that way is -wn where 'n' is\n" Comment.Single
+
+'# the size of the kaleidoscope window (default is 600 square).\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Terminology (and options):\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Window_size (-wN): How big of a display window to use.\n' Comment.Single
+
+'# At the current time, this can only be set via a\n' Comment.Single
+
+'# command line argument.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Density (-dN): How many circles per octant to keep on display\n' Comment.Single
+
+'# at any one time. There is NO LIMIT to the density.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Duration (-lN): How long to keep drawing circles (measured in\n' Comment.Single
+
+'# in circles) once the density is reached. There is NO LIMIT\n' Comment.Single
+
+'# to the duration.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# MaxRadius (-MN): Maximum radius of any circle.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# MinRadius (-mN): Preferred minimum radius. Circles with centers\n' Comment.Single
+
+'# near the edge have their radii forced down to fit entirely\n' Comment.Single
+
+'# on the display\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# MaxOffset (-XN): Maximum offset from center of display (may wrap).\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# MinOffset (-xN): Minimum offset\n' Comment.Single
+
+'#\n' Comment.Single
+
+"# Skew (-sN): Shift probability of placing a circle at a 'typical'\n" Comment.Single
+
+'# offset.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Fill (-F): Turns off filling the circles.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Clear (-C): After the duration, reduces density back to 0 before\n' Comment.Single
+
+'# quitting.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Random Seed: (-rN): Sets the random number seed.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Thanks to Jon Lipp for help on using vidgets, and to Mary Camaron\n' Comment.Single
+
+'# for her Interface Builder.\n' Comment.Single
+
+'#\n' Comment.Single
+
+'############################################################################\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Requires: Version 9 graphics\n' Comment.Single
+
+'#\n' Comment.Single
+
+'############################################################################\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Links: vidgets, vslider, vtext, vbuttons, vradio, wopen, xcompat\n' Comment.Single
+
+'#\n' Comment.Single
+
+'############################################################################\n' Comment.Single
+
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'vidgets' Name
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'vslider' Name
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'vtext' Name
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'vbuttons' Name
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'vradio' Name
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'wopen' Name
+'\n' Text
+
+'link' Keyword.Declaration
+' ' Text
+'xcompat' Name
+'\n\n' Text
+
+'global' Keyword.Reserved
+' ' Text
+'Clear' Name
+',' Punctuation
+' ' Text
+'fill' Name
+',' Punctuation
+' ' Text
+'duration' Name
+',' Punctuation
+' ' Text
+'density' Name
+',' Punctuation
+' ' Text
+'maxoff' Name
+',' Punctuation
+' ' Text
+'minoff' Name
+'\n' Text
+
+'global' Keyword.Reserved
+' ' Text
+'maxradius' Name
+',' Punctuation
+' ' Text
+'minradius' Name
+',' Punctuation
+' ' Text
+'r_seed' Name
+',' Punctuation
+' ' Text
+'skew' Name
+',' Punctuation
+' ' Text
+'win_size' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'\n' Text
+
+'global' Keyword.Reserved
+' ' Text
+'root' Name
+',' Punctuation
+' ' Text
+'check1' Name
+',' Punctuation
+' ' Text
+'mainwin' Name
+',' Punctuation
+' ' Text
+'use_dialog' Name
+'\n' Text
+
+'global' Keyword.Reserved
+' ' Text
+'draw_circle' Name
+'\n\n' Text
+
+'global' Keyword.Reserved
+' ' Text
+'du_v' Name
+',' Punctuation
+' ' Text
+'de_v' Name
+',' Punctuation
+' ' Text
+'rs_v' Name
+',' Punctuation
+' ' Text
+'sk_v' Name
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'main' Name.Function
+' ' Text
+'(' Punctuation
+'args' Name.Variable
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'draw_circle' Name
+' ' Text
+':=' Operator
+' ' Text
+'DrawCircle' Name.Function
+'\n\n' Text
+
+' ' Text
+'init_globs' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'process_args' Name
+'(' Punctuation
+'args' Name.Function
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'\\' Operator
+'use_dialog' Name
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'{' Punctuation
+' ' Text
+'# have vidgets, so use them for args.\n' Comment.Single
+
+' ' Text
+'mainwin' Name
+' ' Text
+':=' Operator
+' ' Text
+'WOpen' Name
+'(' Punctuation
+'"label=Kaleidoscope"' Literal.String
+',' Punctuation
+' ' Text
+'"width=404"' Literal.String
+',' Punctuation
+' ' Text
+'"height=313"' Literal.String
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'"font=6x12"' Literal.String
+')' Punctuation
+' ' Text
+'|' Operator
+'\n' Text
+
+' ' Text
+'stop' Name.Function
+' ' Text
+'(' Punctuation
+'"bad mainwin"' Literal.String
+')' Punctuation
+'\n' Text
+
+' ' Text
+'root' Name
+' ' Text
+':=' Operator
+' ' Text
+'ui' Name
+' ' Text
+'(' Punctuation
+'mainwin' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'GetEvents' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'quit' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'else' Keyword.Reserved
+' ' Text
+'{' Punctuation
+' ' Text
+'# just rely on command line arguments\n' Comment.Single
+
+' ' Text
+'kaleidoscope' Name
+'(' Punctuation
+'r_seed' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'init_globs' Name.Function
+'(' Punctuation
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'duration' Name
+' ' Text
+':=' Operator
+' ' Text
+'500' Literal.Number.Integer
+' ' Text
+'# set default characteristics\n' Comment.Single
+
+' ' Text
+'density' Name
+' ' Text
+':=' Operator
+' ' Text
+'30' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'win_size' Name
+' ' Text
+':=' Operator
+' ' Text
+'600' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'minoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'1' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'maxradius' Name
+' ' Text
+':=' Operator
+' ' Text
+'150' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'minradius' Name
+' ' Text
+':=' Operator
+' ' Text
+'1' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'skew' Name
+' ' Text
+':=' Operator
+' ' Text
+'1' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'fill' Name
+' ' Text
+':=' Operator
+' ' Text
+'"On"' Literal.String
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+' ' Text
+':=' Operator
+' ' Text
+'FillCircle' Name.Function
+'\n' Text
+
+' ' Text
+'Clear' Name
+' ' Text
+':=' Operator
+' ' Text
+'"Off"' Literal.String
+'\n' Text
+
+' ' Text
+'r_seed' Name
+' ' Text
+':=' Operator
+' ' Text
+'map' Name.Function
+'(' Punctuation
+'"HhMmYy"' Literal.String
+',' Punctuation
+' ' Text
+'"Hh:Mm:Yy"' Literal.String
+',' Punctuation
+' ' Text
+'&clock' Keyword.Reserved
+')' Punctuation
+'\n' Text
+
+' ' Text
+'# See if the Vidget library is available or not\n' Comment.Single
+
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'\\' Operator
+'VSet' Name
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'use_dialog' Name
+' ' Text
+':=' Operator
+' ' Text
+'"yes"' Literal.String
+'\n' Text
+
+' ' Text
+'else' Keyword.Reserved
+' ' Text
+'use_dialog' Name
+' ' Text
+':=' Operator
+' ' Text
+'&null' Keyword.Constant
+'\n\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'process_args' Name.Function
+'(' Punctuation
+'args' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'local' Keyword.Reserved
+' ' Text
+'arg' Name
+'\n\n' Text
+
+' ' Text
+"# really only needed if you don't use the dialog box\n" Comment.Single
+
+' ' Text
+'every' Keyword.Reserved
+' ' Text
+'arg' Name
+' ' Text
+':=' Operator
+' ' Text
+'!' Operator
+'args' Name.Function
+' ' Text
+'do' Keyword.Reserved
+' ' Text
+'case' Keyword.Reserved
+' ' Text
+'arg' Name
+'[' Punctuation
+'1' Literal.Number.Integer
+'+' Operator
+':' Punctuation
+'2' Literal.Number.Integer
+']' Punctuation
+' ' Text
+'of' Keyword.Reserved
+' ' Text
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'"-w"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'win_size' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# window size\n' Comment.Single
+
+' ' Text
+'"-d"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'density' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# density of circles\n' Comment.Single
+
+' ' Text
+'"-l"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'duration' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# duration\n' Comment.Single
+
+' ' Text
+'"-M"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'maxradius' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# maximum radius\n' Comment.Single
+
+' ' Text
+'"-m"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'minradius' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# minimum radius\n' Comment.Single
+
+' ' Text
+'"-X"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'maxoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# maximum offset\n' Comment.Single
+
+' ' Text
+'"-x"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'minoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# minimum offset\n' Comment.Single
+
+' ' Text
+'"-s"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'skew' Name
+' ' Text
+':=' Operator
+' ' Text
+'numeric' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# set skewedness\n' Comment.Single
+
+' ' Text
+'"-F"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'fill' Name
+' ' Text
+':=' Operator
+' ' Text
+'&null' Keyword.Constant
+' ' Text
+'# turn off fill\n' Comment.Single
+
+' ' Text
+'"-C"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'Clear' Name
+' ' Text
+':=' Operator
+' ' Text
+'"yes"' Literal.String
+' ' Text
+'# turn on clear mode\n' Comment.Single
+
+' ' Text
+'"-r"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'r_seed' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'arg' Name
+'[' Punctuation
+'3' Literal.Number.Integer
+':' Punctuation
+'0' Literal.Number.Integer
+']' Punctuation
+')' Punctuation
+' ' Text
+'# random seed\n' Comment.Single
+
+' ' Text
+'"-h"' Literal.String
+' ' Text
+':' Punctuation
+' ' Text
+'stop' Name.Function
+'(' Punctuation
+'"usage: kal [-wn] [-dn] [-ln] [-Mn] [-mn] [-Xn] [-xn] _\n [-sn] [-F] [-C] [-rn]"' Literal.String
+')' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'# adjust parameters that depend on the window size...\n' Comment.Single
+
+' ' Text
+'mid_win' Name
+' ' Text
+':=' Operator
+' ' Text
+'win_size' Name
+'/' Operator
+'2' Literal.Number.Integer
+'\n' Text
+
+' ' Text
+'maxoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'win_size' Name
+'-1' Literal.Number.Integer
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+"# Lorraine Callahan's kaleidoscope program, translated into icon.\n" Comment.Single
+
+'# (some of the things she did were too sophisticated for me\n' Comment.Single
+
+'# to spend time to figure out, so the output is square instead of\n' Comment.Single
+
+"# round), and I use 'xor' to draw instead of writing to separate\n" Comment.Single
+
+'# bit planes.\n' Comment.Single
+
+'\n' Text
+
+'global' Keyword.Reserved
+' ' Text
+'putcircle' Name
+',' Punctuation
+' ' Text
+'clrcircle' Name
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'kaleidoscope' Name.Function
+'(' Punctuation
+'r' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'local' Keyword.Reserved
+' ' Text
+'colors' Name
+'\n\n' Text
+
+' ' Text
+'# What colors to use? This can be changed to whatever!\n' Comment.Single
+
+' ' Text
+'colors' Name
+' ' Text
+':=' Operator
+' ' Text
+'[' Punctuation
+'"red"' Literal.String
+',' Punctuation
+'"green"' Literal.String
+',' Punctuation
+'"blue"' Literal.String
+',' Punctuation
+'"cyan"' Literal.String
+',' Punctuation
+'"magenta"' Literal.String
+',' Punctuation
+'"yellow"' Literal.String
+']' Punctuation
+'\n\n' Text
+
+' ' Text
+'&window' Keyword.Reserved
+' ' Text
+':=' Operator
+' ' Text
+'WOpen' Name
+'(' Punctuation
+'"label=Kaleidoscope: \'q\' quits"' Literal.String
+',' Punctuation
+' ' Text
+'"width="' Literal.String
+'||' Operator
+'win_size' Name
+',' Punctuation
+'\n' Text
+
+' ' Text
+'"height="' Literal.String
+'||' Operator
+'win_size' Name
+',' Punctuation
+' ' Text
+'"bg=black"' Literal.String
+')' Punctuation
+'\n' Text
+
+' ' Text
+'WAttrib' Name.Function
+'(' Punctuation
+'"drawop=xor"' Literal.String
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'# Create two *indentical* sequences of circles, one to use when\n' Comment.Single
+
+' ' Text
+"# when drawing, one for erasing. (Since 'xor' is used to\n" Comment.Single
+
+' ' Text
+'# place them, these both just draw the circles!)\n' Comment.Single
+
+'\n' Text
+
+' ' Text
+'putcircle' Name
+' ' Text
+':=' Operator
+' ' Text
+'create' Keyword.Reserved
+' ' Text
+'{' Punctuation
+' ' Text
+'# draws sequence of circles\n' Comment.Single
+
+' ' Text
+'&random' Keyword.Reserved
+' ' Text
+':=:' Operator
+' ' Text
+'r' Name
+'\n' Text
+
+' ' Text
+'|' Operator
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'Fg' Name.Function
+'(' Punctuation
+'?' Operator
+'colors' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'outcircle' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'&random' Keyword.Reserved
+' ' Text
+'<->' Operator
+' ' Text
+'r' Name
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n\n' Text
+
+' ' Text
+'clrcircle' Name
+' ' Text
+':=' Operator
+' ' Text
+'create' Keyword.Reserved
+' ' Text
+'{' Punctuation
+' ' Text
+'# erases sequence of circles\n' Comment.Single
+
+' ' Text
+'&random' Keyword.Reserved
+' ' Text
+':=:' Operator
+' ' Text
+'r' Name
+'\n' Text
+
+' ' Text
+'|' Operator
+'{' Punctuation
+'\n' Text
+
+' ' Text
+'Fg' Name.Function
+'(' Punctuation
+'?' Operator
+'colors' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'outcircle' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'&random' Keyword.Reserved
+' ' Text
+'<->' Operator
+' ' Text
+'r' Name
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n\n' Text
+
+' ' Text
+'every' Keyword.Reserved
+' ' Text
+'1' Literal.Number.Integer
+' ' Text
+'to' Keyword.Reserved
+' ' Text
+'density' Name
+' ' Text
+'do' Keyword.Reserved
+' ' Text
+'@' Operator
+'putcircle' Name
+' ' Text
+'# fill screen to density\n' Comment.Single
+
+'\n' Text
+
+' ' Text
+'every' Keyword.Reserved
+' ' Text
+'1' Literal.Number.Integer
+' ' Text
+'to' Keyword.Reserved
+' ' Text
+'duration' Name
+' ' Text
+'do' Keyword.Reserved
+' ' Text
+'{' Punctuation
+' ' Text
+'# maintain steady state\n' Comment.Single
+
+' ' Text
+'@' Operator
+'putcircle' Name
+'\n' Text
+
+' ' Text
+'@' Operator
+'clrcircle' Name
+'\n' Text
+
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'*' Operator
+'Pending' Name.Function
+'(' Punctuation
+'&window' Keyword.Reserved
+')' Punctuation
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'break' Keyword.Reserved
+'\n' Text
+
+' ' Text
+'}' Punctuation
+'\n\n' Text
+
+' ' Text
+'every' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Clear' Name
+' ' Text
+'==' Operator
+' ' Text
+'"On"' Literal.String
+')' Punctuation
+' ' Text
+'&' Operator
+' ' Text
+'1' Literal.Number.Integer
+' ' Text
+'to' Keyword.Reserved
+' ' Text
+'density' Name
+' ' Text
+'do' Keyword.Reserved
+' ' Text
+'@' Operator
+'clrcircle' Name
+'\n\n' Text
+
+' ' Text
+'close' Name.Function
+'(' Punctuation
+'&window' Keyword.Reserved
+')' Punctuation
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'outcircle' Name.Function
+'(' Punctuation
+')' Punctuation
+' ' Text
+'# select a circle at random,\n' Comment.Single
+
+'local' Keyword.Reserved
+' ' Text
+'radius' Name
+',' Punctuation
+' ' Text
+'xoff' Name
+',' Punctuation
+' ' Text
+'yoff' Name
+' ' Text
+'# draw it in kaleidoscopic form\n' Comment.Single
+
+'\n' Text
+
+' ' Text
+'# get a random center point and radius\n' Comment.Single
+
+' ' Text
+'xoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'(' Punctuation
+'?' Operator
+'(' Punctuation
+'maxoff' Name
+' ' Text
+'-' Operator
+' ' Text
+'minoff' Name
+')' Punctuation
+' ' Text
+'+' Operator
+' ' Text
+'minoff' Name
+')' Punctuation
+' ' Text
+'%' Punctuation
+' ' Text
+'mid_win' Name
+'\n' Text
+
+' ' Text
+'yoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'(' Punctuation
+'?' Operator
+'(' Punctuation
+'maxoff' Name
+' ' Text
+'-' Operator
+' ' Text
+'minoff' Name
+')' Punctuation
+' ' Text
+'+' Operator
+' ' Text
+'minoff' Name
+')' Punctuation
+' ' Text
+'%' Punctuation
+' ' Text
+'mid_win' Name
+'\n' Text
+
+' ' Text
+'radius' Name
+' ' Text
+':=' Operator
+' ' Text
+'?' Operator
+'0' Literal.Number.Integer
+' ' Text
+'^' Punctuation
+' ' Text
+'skew' Name
+'\n' Text
+
+' ' Text
+"# force radius to 'fit'\n" Comment.Single
+
+' ' Text
+'radius' Name
+' ' Text
+':=' Operator
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'maxradius' Name
+'-' Operator
+'minradius' Name
+')' Punctuation
+' ' Text
+'*' Operator
+' ' Text
+'radius' Name
+' ' Text
+'+' Operator
+' ' Text
+'minradius' Name
+')' Punctuation
+' ' Text
+'%' Punctuation
+'\n' Text
+
+' ' Text
+'(' Punctuation
+'mid_win' Name
+' ' Text
+'-' Operator
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'xoff' Name
+' ' Text
+'<' Operator
+' ' Text
+'yoff' Name
+')' Punctuation
+'|' Operator
+'xoff' Name
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'# put into all 8 octants\n' Comment.Single
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'+' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'+' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'+' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'-' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'-' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'+' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'-' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'-' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'+' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'+' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'+' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'-' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'-' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'+' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'draw_circle' Name
+'(' Punctuation
+'mid_win' Name
+'-' Operator
+'yoff' Name
+',' Punctuation
+' ' Text
+'mid_win' Name
+'-' Operator
+'xoff' Name
+',' Punctuation
+' ' Text
+'radius' Name
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'return' Keyword.Reserved
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n\n' Text
+
+'############################################################################\n' Comment.Single
+
+'#\n' Comment.Single
+
+'# Vidget-based user interface -- developed originally using Mary\n' Comment.Single
+
+"# Camaron's XIB program. Don't expect this to be very readable -\n" Comment.Single
+
+'# you should have to play with it!\n' Comment.Single
+
+'#\n' Comment.Single
+
+'############################################################################\n' Comment.Single
+
+'procedure' Keyword.Declaration
+' ' Text
+'ui' Name.Function
+' ' Text
+'(' Punctuation
+'win' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'local' Keyword.Reserved
+' ' Text
+'cv1' Name
+',' Punctuation
+' ' Text
+'cv2' Name
+',' Punctuation
+' ' Text
+'cv3' Name
+',' Punctuation
+' ' Text
+'cv4' Name
+'\n' Text
+
+' ' Text
+'local' Keyword.Reserved
+' ' Text
+'\n' Text
+
+' ' Text
+'radio_button2' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'radio_button1' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'text_input6' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'text_input5' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'slider4' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'slider3' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'text_input4' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'text_input3' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'slider2' Name
+',' Punctuation
+' ' Text
+'\n' Text
+
+' ' Text
+'slider1' Name
+' ' Text
+'\n\n' Text
+
+' ' Text
+'/' Operator
+'win' Name
+' ' Text
+':=' Operator
+' ' Text
+'WOpen' Name
+'(' Punctuation
+'"label=ui"' Literal.String
+',' Punctuation
+' ' Text
+'"width=404"' Literal.String
+',' Punctuation
+' ' Text
+'"height=313"' Literal.String
+',' Punctuation
+' ' Text
+'"font=6x12"' Literal.String
+')' Punctuation
+' ' Text
+'|' Operator
+' ' Text
+'\n' Text
+
+' ' Text
+'stop' Name.Function
+' ' Text
+'(' Punctuation
+'"bad win"' Literal.String
+')' Punctuation
+'\n' Text
+
+' ' Text
+'root' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vroot_frame' Name
+' ' Text
+'(' Punctuation
+'win' Name
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vmessage' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'win_size' Name
+'/' Operator
+'2' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+' ' Text
+'168' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'98' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vmessage' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"1"' Literal.String
+')' Punctuation
+',' Punctuation
+' ' Text
+'108' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'97' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'sk_v' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+'"Skew:\\\\=1"' Literal.String
+',' Punctuation
+'get_skew' Name
+',' Punctuation
+',' Punctuation
+'6' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+' ' Text
+'280' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'39' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'du_v' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Duration:\\\\="' Literal.String
+'||' Operator
+'duration' Name
+',' Punctuation
+' ' Text
+'get_duration' Name
+',' Punctuation
+',' Punctuation
+'9' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'237' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'15' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vmessage' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Clear at end?"' Literal.String
+')' Punctuation
+',' Punctuation
+' ' Text
+'232' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'145' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vmessage' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Fill?"' Literal.String
+')' Punctuation
+',' Punctuation
+' ' Text
+'105' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'142' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vmessage' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+'"Quit?"' Literal.String
+')' Punctuation
+',' Punctuation
+' ' Text
+'267' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'259' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vmessage' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+'"Display it?"' Literal.String
+')' Punctuation
+',' Punctuation
+' ' Text
+'26' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'260' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'Vcheckbox' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'do_quit' Name
+',' Punctuation
+' ' Text
+'"check2"' Literal.String
+',' Punctuation
+'20' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+' ' Text
+'305' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'255' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'20' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'20' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'check1' Name
+':=' Operator
+'Vcheckbox' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'do_display' Name
+',' Punctuation
+' ' Text
+'"check1"' Literal.String
+',' Punctuation
+'20' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'106' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'258' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'20' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'20' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'radio_button2' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vradio_buttons' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'[' Punctuation
+'"On"' Literal.String
+',' Punctuation
+' ' Text
+'"Off"' Literal.String
+']' Punctuation
+',' Punctuation
+' ' Text
+'get_clear' Name
+',' Punctuation
+' ' Text
+',' Punctuation
+' ' Text
+'V_CIRCLE' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VSet' Name
+'(' Punctuation
+'radio_button2' Name
+',' Punctuation
+'Clear' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'radio_button2' Name
+',' Punctuation
+' ' Text
+'253' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'165' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'radio_button1' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vradio_buttons' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'[' Punctuation
+'"On"' Literal.String
+',' Punctuation
+' ' Text
+'"Off"' Literal.String
+']' Punctuation
+',' Punctuation
+' ' Text
+'get_fill' Name
+',' Punctuation
+' ' Text
+',' Punctuation
+' ' Text
+'V_CIRCLE' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VSet' Name
+'(' Punctuation
+'radio_button1' Name
+',' Punctuation
+'fill' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'radio_button1' Name
+',' Punctuation
+' ' Text
+'99' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'165' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'cv1' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vcoupler' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv1' Name
+',' Punctuation
+' ' Text
+'get_max_offset' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'text_input6' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Max Offset:\\\\="' Literal.String
+'||' Operator
+'(' Punctuation
+'win_size' Name
+'-1' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+' ' Text
+'cv1' Name
+',' Punctuation
+' ' Text
+',' Punctuation
+' ' Text
+'3' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv1' Name
+',' Punctuation
+' ' Text
+'text_input6' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'slider4' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vhoriz_slider' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'cv1' Name
+',' Punctuation
+' ' Text
+'"slider4"' Literal.String
+',' Punctuation
+' ' Text
+'70' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'12' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'0' Literal.Number.Integer
+',' Punctuation
+'\n' Text
+
+' ' Text
+'win_size' Name
+'-1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'win_size' Name
+'-1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv1' Name
+',' Punctuation
+' ' Text
+'slider4' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'text_input6' Name
+',' Punctuation
+' ' Text
+'196' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'103' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'slider4' Name
+',' Punctuation
+' ' Text
+'306' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'106' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'cv2' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vcoupler' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv2' Name
+',' Punctuation
+' ' Text
+'get_min_offset' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'text_input5' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Min Offset\\\\=1"' Literal.String
+',' Punctuation
+' ' Text
+'cv2' Name
+',' Punctuation
+' ' Text
+',' Punctuation
+' ' Text
+'3' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv2' Name
+',' Punctuation
+' ' Text
+'text_input5' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'slider3' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vhoriz_slider' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'cv2' Name
+',' Punctuation
+' ' Text
+'"slider3"' Literal.String
+',' Punctuation
+' ' Text
+'70' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'12' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'win_size' Name
+'-1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv2' Name
+',' Punctuation
+' ' Text
+'slider3' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'text_input5' Name
+',' Punctuation
+' ' Text
+'201' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'80' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'slider3' Name
+',' Punctuation
+' ' Text
+'307' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'82' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'cv3' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vcoupler' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv3' Name
+',' Punctuation
+' ' Text
+'get_max_radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'text_input4' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Max Radius\\\\="' Literal.String
+'||' Operator
+'(' Punctuation
+'win_size' Name
+'/' Operator
+'4' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+' ' Text
+'cv3' Name
+',' Punctuation
+' ' Text
+',' Punctuation
+' ' Text
+'3' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv3' Name
+',' Punctuation
+' ' Text
+'text_input4' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'slider2' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vhoriz_slider' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'cv3' Name
+',' Punctuation
+' ' Text
+'"slider2"' Literal.String
+',' Punctuation
+' ' Text
+'70' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'12' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'win_size' Name
+'/' Operator
+'2' Literal.Number.Integer
+',' Punctuation
+'\n' Text
+
+' ' Text
+'win_size' Name
+'/' Operator
+'4' Literal.Number.Integer
+',' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv3' Name
+',' Punctuation
+' ' Text
+'slider2' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'text_input4' Name
+',' Punctuation
+' ' Text
+'10' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'104' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'slider2' Name
+',' Punctuation
+' ' Text
+'110' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'108' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'cv4' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vcoupler' Name
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv4' Name
+',' Punctuation
+' ' Text
+'get_min_radius' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'text_input3' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'"Min Radius\\\\=1"' Literal.String
+',' Punctuation
+' ' Text
+'cv4' Name
+',' Punctuation
+' ' Text
+',' Punctuation
+' ' Text
+'3' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv4' Name
+',' Punctuation
+' ' Text
+'text_input3' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'slider1' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vhoriz_slider' Name
+' ' Text
+'(' Punctuation
+'win' Name
+',' Punctuation
+' ' Text
+'cv4' Name
+',' Punctuation
+' ' Text
+'"slider1"' Literal.String
+',' Punctuation
+' ' Text
+'70' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'12' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'win_size' Name
+'/' Operator
+'2' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'1' Literal.Number.Integer
+',' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VAddClient' Name
+'(' Punctuation
+'cv4' Name
+',' Punctuation
+' ' Text
+'slider1' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'text_input3' Name
+',' Punctuation
+' ' Text
+'10' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'81' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'slider1' Name
+',' Punctuation
+' ' Text
+'110' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'84' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'rs_v' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+'"Random Seed:\\\\="' Literal.String
+'||' Operator
+'r_seed' Name
+',' Punctuation
+' ' Text
+'get_random' Name
+',' Punctuation
+',' Punctuation
+' ' Text
+'11' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'30' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'41' Literal.Number.Integer
+')' Punctuation
+'\n' Text
+
+' ' Text
+'VInsert' Name
+' ' Text
+'(' Punctuation
+'root' Name
+',' Punctuation
+' ' Text
+'de_v' Name
+' ' Text
+':=' Operator
+' ' Text
+'Vtext' Name
+'(' Punctuation
+'win' Name
+',' Punctuation
+'"Density:\\\\="' Literal.String
+'||' Operator
+'density' Name
+',' Punctuation
+' ' Text
+'get_density' Name
+',' Punctuation
+',' Punctuation
+'8' Literal.Number.Integer
+')' Punctuation
+',' Punctuation
+'\n' Text
+
+' ' Text
+'71' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'16' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+' ' Text
+'VResize' Name
+' ' Text
+'(' Punctuation
+'root' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'return' Keyword.Reserved
+' ' Text
+'root' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_skew' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'skew' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_duration' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'duration' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'do_quit' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'stop' Name.Function
+'(' Punctuation
+')' Punctuation
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'do_display' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'r_seed' Name
+' ' Text
+':=' Operator
+' ' Text
+'numeric' Name.Function
+'(' Punctuation
+'rs_v' Name
+'.' Literal.Number.Float
+'data' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'duration' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'du_v' Name
+'.' Literal.Number.Float
+'data' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'density' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'de_v' Name
+'.' Literal.Number.Float
+'data' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'skew' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'sk_v' Name
+'.' Literal.Number.Float
+'data' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'kaleidoscope' Name
+'(' Punctuation
+'r_seed' Name
+')' Punctuation
+'\n' Text
+
+' ' Text
+'wit' Name
+'.' Literal.Number.Float
+'callback' Name
+'.' Literal.Number.Float
+'value' Name
+' ' Text
+':=' Operator
+' ' Text
+'&null' Keyword.Constant
+'\n' Text
+
+' ' Text
+'VDraw' Name
+'(' Punctuation
+'check1' Name
+')' Punctuation
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_clear' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'Clear' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_fill' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'fill' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'fill' Name
+' ' Text
+'==' Operator
+' ' Text
+'"Off"' Literal.String
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'draw_circle' Name
+' ' Text
+':=' Operator
+' ' Text
+'DrawCircle' Name.Function
+'\n' Text
+
+' ' Text
+'else' Keyword.Reserved
+' ' Text
+'draw_circle' Name
+' ' Text
+':=' Operator
+' ' Text
+'FillCircle' Name.Function
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_max_offset' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'maxoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_min_offset' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'minoff' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_max_radius' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'maxradius' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_min_radius' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'minradius' Name
+' ' Text
+':=' Operator
+' ' Text
+'value' Name
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_random' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'r_seed' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'value' Name
+')' Punctuation
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'get_density' Name.Function
+' ' Text
+'(' Punctuation
+'wit' Name.Variable
+',' Punctuation
+' ' Text
+'value' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'density' Name
+' ' Text
+':=' Operator
+' ' Text
+'integer' Name.Function
+'(' Punctuation
+'value' Name
+')' Punctuation
+'\n' Text
+
+'end' Keyword.Reserved
+'\n\n' Text
+
+'procedure' Keyword.Declaration
+' ' Text
+'quit' Name.Function
+'(' Punctuation
+'e' Name.Variable
+')' Punctuation
+'\n' Text
+
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'e' Name
+' ' Text
+'===' Operator
+' ' Text
+'"q"' Literal.String
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'stop' Name.Function
+' ' Text
+'(' Punctuation
+'"Exiting Kaleidoscope"' Literal.String
+')' Punctuation
+'\n' Text
+
+'end' Keyword.Reserved
+'\n' Text