diff options
| author | Georg Brandl <georg@python.org> | 2021-01-18 21:24:00 +0100 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2021-01-18 22:08:36 +0100 |
| commit | 2a3d3a7d5b9c60dedf6638d876161d9563faebcf (patch) | |
| tree | 809c0b4a686db98f5954afa1944404cd9652c6b2 /tests/lexers/icon | |
| parent | f0445be718da83541ea3401aad882f3937147263 (diff) | |
| download | pygments-git-examplefiles.tar.gz | |
Move test_examplefiles to new tests/lexers scheme.examplefiles
Diffstat (limited to 'tests/lexers/icon')
| -rw-r--r-- | tests/lexers/icon/example.txt | 3352 |
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 |
