diff --git a/Makefile b/Makefile
index 1f2fa2a..11f20b5 100644
--- a/Makefile
+++ b/Makefile
@@ -112,9 +112,9 @@ bin/retro-muri: tools/muri.c
bin/retro-repl: vm/nga-c/repl.c vm/nga-c/image.c
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-repl repl.c
-bin/retro: ngaImage bin/retro-embedimage bin/retro-extend vm/nga-c/retro-image.c vm/nga-c/retro-unix.c interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/retro-unix.retro interface/clock.retro
+bin/retro: ngaImage bin/retro-embedimage bin/retro-extend vm/nga-c/retro-image.c vm/nga-c/retro-unix.c interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/scripting.retro interface/retro-unix.retro interface/clock.retro
cp ngaImage rre.image
- ./bin/retro-extend rre.image interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/retro-unix.retro interface/clock.retro
+ ./bin/retro-extend rre.image interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/scripting.retro interface/retro-unix.retro interface/clock.retro
./bin/retro-embedimage rre.image >vm/nga-c/retro-image.c
cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro retro-unix.c $(LIBM)
cd package && ../bin/retro -f list.forth
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 187a156..e578149 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -14,10 +14,16 @@ Standard Library
Unix
-- added `sys:current-file` to return the filename being processed
-- added `sys:current-line` to return the current line number being
+- added `script:current-file` to return the filename being processed
+- added `script:current-line` to return the current line number being
processed
-- added `sys:ignore-to-eol` to support commenting out lines when
+- added `script:ignore-to-eol` to support commenting out lines when
processing files
+- added `script:abort-include` to support canceling rest of current
+ file being processed
- added `//` to comment out lines (works with files and at the
listener)
+- deprecated words
+ - sys:name (now script:name)
+ - sys:argc (now script:arguments)
+ - sys:argv (now script:get-argument)
diff --git a/doc/Glossary-Concise.txt b/doc/Glossary-Concise.txt
index 764c390..6d4f7ca 100644
--- a/doc/Glossary-Concise.txt
+++ b/doc/Glossary-Concise.txt
@@ -1294,6 +1294,27 @@ Trim leading whitespace from a string.
s:trim-right D: s-s A: - F: -
Trim trailing whitespace from a string.
+script:abort-include D: - A: - F: -
+Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter.
+
+script:arguments D: -n A: - F: -
+Return the number of arguments passed to the program.
+
+script:current-file D: -s A: - F: -
+Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal.
+
+script:current-line D: -n A: - F: -
+Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal.
+
+script:get-argument D: n-s A: - F: -
+Given an argument number, return the argument as a string.
+
+script:ignore-to-eof D: - A: - F: -
+Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter.
+
+script:name D: -s A: - F: -
+Return the filename of the program being run.
+
set-hook D: aa- A: - F: -
Patch the hook point in a2 to point to a1.
@@ -1345,26 +1366,14 @@ Store a value into the specified address and return the next address.
swap D: nm-mn A: - F: -
Exchange the position of the top two items on the stack
-sys:abort-include D: - A: - F: -
-Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter.
-
sys:argc D: -n A: - F: -
-Return the number of arguments passed to the program.
+Return the number of arguments passed to the program. Deprecated. Use script:arguments
sys:argv D: n-s A: - F: -
-Given an argument number, return the argument as a string.
-
-sys:current-file D: -s A: - F: -
-Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal.
-
-sys:current-line D: -n A: - F: -
-Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal.
-
-sys:ignore-to-eof D: - A: - F: -
-Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter.
+Given an argument number, return the argument as a string. Deprecated. Use script:get-argument instead.
sys:name D: -s A: - F: -
-Return the filename of the program being run.
+Return the filename of the program being run. Deprecated. Use script:name instead.
tab D: - A: - F: -
Display a tab (`ASCII:HT`)
diff --git a/doc/Glossary-Names-and-Stack.txt b/doc/Glossary-Names-and-Stack.txt
index a0c9502..b194541 100644
--- a/doc/Glossary-Names-and-Stack.txt
+++ b/doc/Glossary-Names-and-Stack.txt
@@ -430,6 +430,13 @@ s:tokenize-on-string D: ss-a A: - F: -
s:trim D: s-s A: - F: -
s:trim-left D: s-s A: - F: -
s:trim-right D: s-s A: - F: -
+script:abort-include D: - A: - F: -
+script:arguments D: -n A: - F: -
+script:current-file D: -s A: - F: -
+script:current-line D: -n A: - F: -
+script:get-argument D: n-s A: - F: -
+script:ignore-to-eof D: - A: - F: -
+script:name D: -s A: - F: -
set-hook D: aa- A: - F: -
shift D: mn-o A: - F: -
sip D: nq-n A: - F: -
@@ -447,12 +454,8 @@ sp D: - A: - F: -
store D: na- A: - F: -
store-next D: na-a A: - F: -
swap D: nm-mn A: - F: -
-sys:abort-include D: - A: - F: -
sys:argc D: -n A: - F: -
sys:argv D: n-s A: - F: -
-sys:current-file D: -s A: - F: -
-sys:current-line D: -n A: - F: -
-sys:ignore-to-eof D: - A: - F: -
sys:name D: -s A: - F: -
tab D: - A: - F: -
times D: nq- A: - F: -
diff --git a/doc/Glossary.html b/doc/Glossary.html
index 7099dd4..bdefde6 100644
--- a/doc/Glossary.html
+++ b/doc/Glossary.html
@@ -3319,6 +3319,55 @@
Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter.
+Return the number of arguments passed to the program.
+Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal.
+Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal.
+Given an argument number, return the argument as a string.
+Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter.
+Return the filename of the program being run.
+Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter.
-Return the number of arguments passed to the program.
+Return the number of arguments passed to the program. Deprecated. Use script:arguments
Given an argument number, return the argument as a string.
-Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal.
-Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal.
-Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter.
+Given an argument number, return the argument as a string. Deprecated. Use script:get-argument instead.
Return the filename of the program being run.
+Return the filename of the program being run. Deprecated. Use script:name instead.
Data: -
diff --git a/doc/Glossary.txt b/doc/Glossary.txt
index 4c96c71..8b54fdb 100644
--- a/doc/Glossary.txt
+++ b/doc/Glossary.txt
@@ -5093,6 +5093,83 @@ Example #1:
------------------------------------------------------------------------
+script:abort-include
+
+ Data: -
+ Addr: -
+ Float: -
+
+Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
+script:arguments
+
+ Data: -n
+ Addr: -
+ Float: -
+
+Return the number of arguments passed to the program.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
+script:current-file
+
+ Data: -s
+ Addr: -
+ Float: -
+
+Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
+script:current-line
+
+ Data: -n
+ Addr: -
+ Float: -
+
+Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
+script:get-argument
+
+ Data: n-s
+ Addr: -
+ Float: -
+
+Given an argument number, return the argument as a string.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
+script:ignore-to-eof
+
+ Data: -
+ Addr: -
+ Float: -
+
+Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
+script:name
+
+ Data: -s
+ Addr: -
+ Float: -
+
+Return the filename of the program being run.
+
+Class: class:word | Namespace: sys | Interface Layer: rre
+------------------------------------------------------------------------
+
set-hook
Data: aa-
@@ -5299,24 +5376,13 @@ Exchange the position of the top two items on the stack
Class: class:primitive | Namespace: global | Interface Layer: all
------------------------------------------------------------------------
-sys:abort-include
-
- Data: -
- Addr: -
- Float: -
-
-Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter.
-
-Class: class:word | Namespace: sys | Interface Layer: rre
-------------------------------------------------------------------------
-
sys:argc
Data: -n
Addr: -
Float: -
-Return the number of arguments passed to the program.
+Return the number of arguments passed to the program. Deprecated. Use script:arguments
Class: class:word | Namespace: sys | Interface Layer: rre
------------------------------------------------------------------------
@@ -5327,40 +5393,7 @@ sys:argv
Addr: -
Float: -
-Given an argument number, return the argument as a string.
-
-Class: class:word | Namespace: sys | Interface Layer: rre
-------------------------------------------------------------------------
-
-sys:current-file
-
- Data: -s
- Addr: -
- Float: -
-
-Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal.
-
-Class: class:word | Namespace: sys | Interface Layer: rre
-------------------------------------------------------------------------
-
-sys:current-line
-
- Data: -n
- Addr: -
- Float: -
-
-Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal.
-
-Class: class:word | Namespace: sys | Interface Layer: rre
-------------------------------------------------------------------------
-
-sys:ignore-to-eof
-
- Data: -
- Addr: -
- Float: -
-
-Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter.
+Given an argument number, return the argument as a string. Deprecated. Use script:get-argument instead.
Class: class:word | Namespace: sys | Interface Layer: rre
------------------------------------------------------------------------
@@ -5371,7 +5404,7 @@ sys:name
Addr: -
Float: -
-Return the filename of the program being run.
+Return the filename of the program being run. Deprecated. Use script:name instead.
Class: class:word | Namespace: sys | Interface Layer: rre
------------------------------------------------------------------------
diff --git a/doc/words.tsv b/doc/words.tsv
index dc97cfe..3787ab7 100644
--- a/doc/words.tsv
+++ b/doc/words.tsv
@@ -430,6 +430,13 @@ s:tokenize-on-string ss-a - - Takes a string (s1) and a substring (s2) use as a
s:trim s-s - - Trim leading and trailing whitespace from a string. class:word '__hello__ s:trim {n/a} s all
s:trim-left s-s - - Trim leading whitespace from a string. class:word '__hello__ s:trim-left {n/a} s all
s:trim-right s-s - - Trim trailing whitespace from a string. class:word '__hello__ s:trim-right {n/a} s all
+script:abort-include - - - Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter. class:word {n/a} {n/a} sys rre
+script:arguments -n - - Return the number of arguments passed to the program. class:word {n/a} {n/a} sys rre
+script:current-file -s - - Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal. class:word {n/a} {n/a} sys rre
+script:current-line -n - - Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal. class:word {n/a} {n/a} sys rre
+script:get-argument n-s - - Given an argument number, return the argument as a string. class:word {n/a} {n/a} sys rre
+script:ignore-to-eof - - - Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter. class:word {n/a} {n/a} sys rre
+script:name -s - - Return the filename of the program being run. class:word {n/a} {n/a} sys rre
set-hook aa- - - Patch the hook point in a2 to point to a1. class:word :foo hook ;\n :bar #1 ;\n &bar &foo set-hook {n/a} global all
shift mn-o - - Peform a bitwise shift of m by n bits. If n is positive, shift right. If negative, the shift will be to the left. class:primitive {n/a} {n/a} global all
sip nq-n - - Run quote. After execution completes, put a copy of n back on top of the stack. class:word {n/a} {n/a} global all
@@ -447,13 +454,9 @@ sp - - - Display a space (`ASCII:SPACE`) class:word :spaces (n-) [ sp ] t
store na- - - Store a value into the specified address. class:primitive 'Base var\n #10 &Base store {n/a} global all
store-next na-a - - Store a value into the specified address and return the next address. class:word {n/a} {n/a} global all
swap nm-mn - - Exchange the position of the top two items on the stack class:primitive {n/a} {n/a} global all
-sys:abort-include - - - Discard remaining tokens on the current line being evaluated. This only works when including a file, not at the interpreter. class:word {n/a} {n/a} sys rre
-sys:argc -n - - Return the number of arguments passed to the program. class:word {n/a} {n/a} sys rre
-sys:argv n-s - - Given an argument number, return the argument as a string. class:word {n/a} {n/a} sys rre
-sys:current-file -s - - Return the filename of the file being processed by the current `include`, or `/dev/stdin` if the input source is the terminal. class:word {n/a} {n/a} sys rre
-sys:current-line -n - - Return the current line number of the file being processed by the current `include`, or `0` if the input source is the terminal. class:word {n/a} {n/a} sys rre
-sys:ignore-to-eof - - - Discard remaining lines in the file currently being evaluated. This only works when including a file, not at the interpreter. class:word {n/a} {n/a} sys rre
-sys:name -s - - Return the filename of the program being run. class:word {n/a} {n/a} sys rre
+sys:argc -n - - Return the number of arguments passed to the program. Deprecated. Use script:arguments class:word {n/a} {n/a} sys rre
+sys:argv n-s - - Given an argument number, return the argument as a string. Deprecated. Use script:get-argument instead. class:word {n/a} {n/a} sys rre
+sys:name -s - - Return the filename of the program being run. Deprecated. Use script:name instead. class:word {n/a} {n/a} sys rre
tab - - - Display a tab (`ASCII:HT`) class:word {n/a} {n/a} global all
times nq- - - Run the specified quote the specified number of times. class:word #12 [ $- c:put ] times {n/a} global all
tri xqqq-? - - Apply q1 against x, then q2 against a copy of x, and finally q3 against another copy of x. class:word {n/a} {n/a} global all
diff --git a/example/Cat.retro b/example/Cat.retro
index f915c71..2f3904f 100755
--- a/example/Cat.retro
+++ b/example/Cat.retro
@@ -1,5 +1,5 @@
#!/usr/bin/env retro
~~~
-#0 sys:argv [ s:put nl ] file:for-each-line
+#0 script:get-argument [ s:put nl ] file:for-each-line
~~~
diff --git a/example/Echo.retro b/example/Echo.retro
index 819d162..0e92f09 100755
--- a/example/Echo.retro
+++ b/example/Echo.retro
@@ -3,7 +3,7 @@
This is a simple `echo` style example.
~~~
-#0 sys:argc
+#0 script:get-argument
~~~
Then a simple loop:
@@ -14,7 +14,7 @@ Then a simple loop:
- increment the argument number
~~~
-[ dup sys:argv s:put sp n:inc ] times
+[ dup script:get-argument s:put sp n:inc ] times
~~~
And at the end, discard the argument number and inject a
diff --git a/example/TokiPona-Translate.retro b/example/TokiPona-Translate.retro
index d0ce17f..4e35439 100755
--- a/example/TokiPona-Translate.retro
+++ b/example/TokiPona-Translate.retro
@@ -159,5 +159,5 @@ A couple of resources:
:original dup s:put nl tab ;
:tokens ASCII:SPACE s:tokenize ;
:convert [ translate s:put sp ] a:for-each nl ;
-#0 sys:argv [ s:to-lower clean original tokens convert ] unu
+#0 script:get-argument [ s:to-lower clean original tokens convert ] unu
~~~
diff --git a/example/atua-gophermap.retro b/example/atua-gophermap.retro
index 8144730..8d79ecc 100755
--- a/example/atua-gophermap.retro
+++ b/example/atua-gophermap.retro
@@ -60,7 +60,7 @@ will strip the actual root path off, allowing the selectors
to work as expected.
~~~
-#0 sys:argv s:length 'SKIP const
+#0 script:get-argument s:length 'SKIP const
~~~
So with these defined, I define a couple of constants using
diff --git a/example/display-word-location-information.retro b/example/display-word-location-information.retro
index f4a9807..f67c5f7 100644
--- a/example/display-word-location-information.retro
+++ b/example/display-word-location-information.retro
@@ -1,6 +1,6 @@
# Display Word Information Upon Definition
-This uses the `sys:current-file` and `sys:current-line` words from
+This uses the `script:current-file` and `script:current-line` words from
the Unix implementation of RETRO to display some information about
a word's location as the words are defined.
@@ -9,8 +9,8 @@ populate a runtime database of location information.
~~~
[ (Display_the_word_name) 'abc 'abca reorder s:put tab
- (and_the_current_line_#) sys:current-line n:put tab
- (and_the_current_file) sys:current-file s:put nl
+ (and_the_current_line_#) script:current-line n:put tab
+ (and_the_current_file) script:current-file s:put nl
(call_the_original_d:add-header) &d:add-header #2 + call ]
&d:add-header set-hook
diff --git a/example/edit.retro b/example/edit.retro
index 6c3ec7e..962b32a 100755
--- a/example/edit.retro
+++ b/example/edit.retro
@@ -40,7 +40,7 @@ Since this runs as a standalone application I use a quick check
to exit if no arguments were passed.
~~~
-sys:argc n:zero? [ 'No_file_specified! s:put nl #0 unix:exit ] if
+script:arguments n:zero? [ 'No_file_specified! s:put nl #0 unix:exit ] if
~~~
If I get here, a filename was provided. So I start by creating
@@ -49,7 +49,7 @@ a few variables and constants.
Get the name of the file to edit.
~~~
-#0 sys:argv s:keep 'SourceFile var-n
+#0 script:get-argument s:keep 'SourceFile var-n
~~~
@@ -79,7 +79,7 @@ by the filename. I handle the file creation here.
~~~
@SourceFile 'new s:eq?
- [ #1 sys:argv s:keep !SourceFile
+ [ #1 script:get-argument s:keep !SourceFile
@SourceFile file:A file:open file:close ] if
~~~
diff --git a/example/export-as-html.retro b/example/export-as-html.retro
index a8eeac0..fd53442 100755
--- a/example/export-as-html.retro
+++ b/example/export-as-html.retro
@@ -98,7 +98,7 @@ Locate and embed the CSS from the end of this file.
~~~
' s:put nl
@@ -349,7 +349,7 @@ output.
rule? [ format:rule ] if;
s:put nl ;
-#0 sys:argv [ &Heap &format v:preserve ] file:for-each-line
+#0 script:get-argument [ &Heap &format v:preserve ] file:for-each-line
reset
~~~
diff --git a/example/export-muri-as-html.retro b/example/export-muri-as-html.retro
index 3795ce4..252aea8 100755
--- a/example/export-muri-as-html.retro
+++ b/example/export-muri-as-html.retro
@@ -88,8 +88,8 @@ Output is written to stdout.
'CSS var
:embed-css
' s:put nl ;
:header
@@ -113,7 +113,7 @@ Output is written to stdout.
And finally, run it.
~~~
-#0 sys:argv generate
+#0 script:get-argument generate
~~~
# CSS
diff --git a/example/markdown.retro b/example/markdown.retro
index 1ebb663..f25ec38 100644
--- a/example/markdown.retro
+++ b/example/markdown.retro
@@ -34,7 +34,7 @@ Begin by locating and extracting the CSS.
~~~
' s:put nl
~~~
@@ -157,7 +157,7 @@ Blank lines denote paragraph breaks.
rule? [ format:rule ] if;
s:put nl ;
-#0 sys:argv [ format ] file:for-each-line
+#0 script:get-argument [ format ] file:for-each-line
~~~
This concludes the Markdown (subset) in RETRO utility.
diff --git a/example/retro-extend.retro b/example/retro-extend.retro
index 875545e..c91d6d0 100755
--- a/example/retro-extend.retro
+++ b/example/retro-extend.retro
@@ -236,7 +236,7 @@ top level word called returns.
:valid? (s-sf) dup s:length n:-zero? ;
:progress $. c:put ;
-#0 sys:argv
+#0 script:get-argument
[ [ ASCII:SPACE s:tokenize
[ valid? [ to-TIB process ] &drop choose ] a:for-each
progress
diff --git a/example/retro-locate.retro b/example/retro-locate.retro
index 2bc0ae7..6160b03 100755
--- a/example/retro-locate.retro
+++ b/example/retro-locate.retro
@@ -2,5 +2,5 @@
~~~
'Line var
-'tags [ &Heap [ ASCII:HT s:tokenize !Line @Line #0 a:fetch #0 sys:argv s:eq? [ @Line #2 a:fetch @Line #1 a:fetch s:put $: c:put s:put nl ] if ] v:preserve ] file:for-each-line
+'tags [ &Heap [ ASCII:HT s:tokenize !Line @Line #0 a:fetch #0 script:get-argument s:eq? [ @Line #2 a:fetch @Line #1 a:fetch s:put $: c:put s:put nl ] if ] v:preserve ] file:for-each-line
~~~
diff --git a/example/retro-muri.retro b/example/retro-muri.retro
index 1776684..af3b762 100755
--- a/example/retro-muri.retro
+++ b/example/retro-muri.retro
@@ -104,7 +104,7 @@ are compiled as dummy values, to be resolved later.
~~~
'Pass_1:_ s:put
#0 !AP
-#0 sys:argv
+#0 script:get-argument
[ dup s:length n:zero? [ drop #0 ] if 0;
fetch-next &n:inc dip
$i [ i here n:dec fetch I, ] case
@@ -125,7 +125,7 @@ get resolved and filled in. This allows for forward references.
~~~
'Pass_2:_ s:put
#0 !AP
-#0 sys:argv
+#0 script:get-argument
[ dup s:length n:zero? [ drop #0 ] if 0;
fetch-next &n:inc dip
$i [ drop &AP v:inc ] case
diff --git a/example/retro-tags.retro b/example/retro-tags.retro
index 0a4a9e8..6a1bd4c 100755
--- a/example/retro-tags.retro
+++ b/example/retro-tags.retro
@@ -78,7 +78,7 @@ First, colon definitions.
:output-name
ASCII:SPACE s:tokenize #0 a:fetch n:inc s:put ;
-#0 sys:argv [ s:trim colon-definition? &drop -if; output-name output-location ] unu
+#0 script:get-argument [ s:trim colon-definition? &drop -if; output-name output-location ] unu
~~~
Then variables.
@@ -90,7 +90,7 @@ Then variables.
:output-name
ASCII:SPACE s:tokenize dup a:length #2 - a:fetch n:inc s:put ;
-#0 sys:argv [ s:trim variable? &drop -if; output-name output-location ] unu
+#0 script:get-argument [ s:trim variable? &drop -if; output-name output-location ] unu
~~~
Constants.
@@ -102,7 +102,7 @@ Constants.
:output-name
ASCII:SPACE s:tokenize dup a:length #2 - a:fetch n:inc s:put ;
-#0 sys:argv [ s:trim constant? &drop -if; output-name output-location ] unu
+#0 script:get-argument [ s:trim constant? &drop -if; output-name output-location ] unu
~~~
And finally, words made with `d:create`:
@@ -114,5 +114,5 @@ And finally, words made with `d:create`:
:output-name
ASCII:SPACE s:tokenize dup a:length #2 - a:fetch n:inc s:put ;
-#0 sys:argv [ s:trim created? &drop -if; output-name output-location ] unu
+#0 script:get-argument [ s:trim created? &drop -if; output-name output-location ] unu
~~~
diff --git a/example/retro-unu.retro b/example/retro-unu.retro
index c7b4ee9..1df3648 100755
--- a/example/retro-unu.retro
+++ b/example/retro-unu.retro
@@ -31,7 +31,7 @@ commentary up to date, and has lead to better commented code.
] file:for-each-line drop ;
}}
-#0 sys:argv [ s:put nl ] unu
+#0 script:get-argument [ s:put nl ] unu
~~~
## Commentary
diff --git a/example/share.retro b/example/share.retro
index 8337e13..67fb42c 100755
--- a/example/share.retro
+++ b/example/share.retro
@@ -6,7 +6,7 @@ or via other channels.
First, get the MD5 of the source. Start by construting a pipe:
~~~
-#0 sys:argv 'md5_%s s:format file:R unix:popen 'FID const
+#0 script:get-argument 'md5_%s s:format file:R unix:popen 'FID const
~~~
Then read in until past the prolog (MD5 filename = ...):
@@ -35,7 +35,7 @@ MD5 'gopher://forth.works/0/share/%s s:format 'GOPH s:const
Then copy the source file to the destination directory.
~~~
-here #0 sys:argv file:slurp here DEST file:spew
+here #0 script:get-argument file:slurp here DEST file:spew
~~~
And finally display the URL's.
diff --git a/example/strip-html.retro b/example/strip-html.retro
index f0bf731..e954958 100644
--- a/example/strip-html.retro
+++ b/example/strip-html.retro
@@ -8,7 +8,7 @@ may serve as a starting point for something more useful later on.
'Tag d:create #1025 allot
'In-Tag var
-#0 sys:argv file:open-for-reading swap
+#0 script:get-argument file:open-for-reading swap
[ dup file:read
$< [ &Tag buffer:set &In-Tag v:on ] case
$> [ &Tag 'head [ here buffer:set ] s:case
diff --git a/example/uudecode.retro b/example/uudecode.retro
index 7f79b06..72a3039 100755
--- a/example/uudecode.retro
+++ b/example/uudecode.retro
@@ -63,7 +63,7 @@ data and decode it.
Finally, load the file and iterate over each line.
~~~
-#0 sys:argv
+#0 script:get-argument
[ s:keep
discard-header discard-empty discard-end
fetch-next #32 - dup #45 eq?
diff --git a/example/uuencode.retro b/example/uuencode.retro
index 4eb7aa0..7e2d40f 100755
--- a/example/uuencode.retro
+++ b/example/uuencode.retro
@@ -11,7 +11,7 @@ file name and renders the uuencoded data to standard output.
First, determine the size of the file.
~~~
-#0 sys:argv file:R file:open
+#0 script:get-argument file:R file:open
&file:size &file:close bi 'SIZE const
~~~
@@ -20,7 +20,7 @@ into memory.
~~~
'Data d:create SIZE allot
-&Data #0 sys:argv file:slurp
+&Data #0 script:get-argument file:slurp
~~~
@@ -33,7 +33,7 @@ A uuencoded file starts with a header line of the form:
I am hard coding the mode as 0644.
~~~
-:header (-) #0 sys:argv 'begin_0644_%s1\n s:format s:put ;
+:header (-) #0 script:get-argument 'begin_0644_%s1\n s:format s:put ;
~~~
diff --git a/interface/retro-unix.retro b/interface/retro-unix.retro
index 62e3e21..5166d83 100644
--- a/interface/retro-unix.retro
+++ b/interface/retro-unix.retro
@@ -59,33 +59,6 @@ a quote which looks for an end of line character.
:s:get-word (-s) &c:whitespace? parse-until ;
~~~
-
-## Scripting: Command Line Arguments
-
-RRE also provides access to the command line arguments passed
-to a script. The next few words map the scripting device to
-words we can use.
-
-~~~
-{{
- 'Scripting var
- :identify
- @Scripting n:zero? [
- #9 io:scan-for dup n:negative?
- [ drop 'IO_DEVICE_TYPE_0009_NOT_FOUND s:put nl ]
- [ !Scripting ] choose ] if ;
----reveal---
- :sys:argc (-n) identify #0 @Scripting io:invoke ;
- :sys:argv (n-s) s:empty swap identify #1 @Scripting io:invoke ;
- :include (s-) identify #2 @Scripting io:invoke ;
- :sys:name (-s) s:empty identify #3 @Scripting io:invoke ;
- :sys:current-file (-s) s:empty identify #4 @Scripting io:invoke ;
- :sys:current-line (-n) identify #5 @Scripting io:invoke ;
- :sys:ignore-to-eol (-) identify #6 @Scripting io:invoke ;
- :sys:abort-include (-) identify #7 @Scripting io:invoke ;
-}}
-~~~
-
~~~
:clear ASCII:ESC c:put '[2J s:put ASCII:ESC c:put '[0;0H s:put ;
~~~
@@ -127,7 +100,7 @@ startup flags passed.
(sf-) :process ignoring? [ drop-pair eol? [ &Ignoring v:off ] if ] if;
&interpret &drop choose ;
---reveal---
- :// sys:ignore-to-eol &Ignoring v:on ; immediate
+ :// script:ignore-to-eol &Ignoring v:on ; immediate
:banner version 'RETRO_12_(%n.%n)\n s:format s:put
EOM here - here EOM '%n_Max,_%n_Used,_%n_Free\n s:format s:put ;
:listen @NoEcho [ banner ] -if repeat input process again ;
diff --git a/tools/glossary.retro b/tools/glossary.retro
index 2506599..fe79311 100755
--- a/tools/glossary.retro
+++ b/tools/glossary.retro
@@ -13,7 +13,7 @@ I first check to make sure at least one was passed. If
not, just exit.
~~~
-sys:argc n:zero? [ #0 unix:exit ] if
+script:arguments n:zero? [ #0 unix:exit ] if
~~~
To identify missing words, I need to be able to restrict the
@@ -30,8 +30,8 @@ I use a loop to store arguments into an array named `Args`.
~~~
'Args d:create #32 allot
-#0 sys:argc
- [ dup sys:argv s:keep over &Args + store n:inc ] times
+#0 script:arguments
+ [ dup script:get-argument s:keep over &Args + store n:inc ] times
drop
~~~
diff --git a/tools/retro-describe.retro b/tools/retro-describe.retro
index 369e53f..48544c0 100755
--- a/tools/retro-describe.retro
+++ b/tools/retro-describe.retro
@@ -22,7 +22,7 @@ First, gather the command line arguments. If no word name
was passed, just exit.
~~~
-sys:argc n:zero? [ #0 unix:exit ] if
+script:arguments n:zero? [ #0 unix:exit ] if
~~~
~~~
@@ -150,7 +150,7 @@ the description.
:find-and-display-entry
#0 !LineNumber
s:keep !Target
- sys:name [ &Heap [ s:keep !SourceLine entry? 0; drop matched? [ display-result ] if ] v:preserve ] file:for-each-line nl ;
+ script:name [ &Heap [ s:keep !SourceLine entry? 0; drop matched? [ display-result ] if ] v:preserve ] file:for-each-line nl ;
}}
~~~
@@ -160,7 +160,7 @@ This checks the command line arguments and calls the proper words to
handle each case.
~~~
-sys:argc [ I sys:argv find-and-display-entry ] indexed-times
+script:arguments [ I script:get-argument find-and-display-entry ] indexed-times
~~~
# Glossary Data
diff --git a/vm/nga-c/retro-image.c b/vm/nga-c/retro-image.c
index 86337ed..585d8e4 100644
--- a/vm/nga-c/retro-image.c
+++ b/vm/nga-c/retro-image.c
@@ -2,8 +2,8 @@
#ifndef CELL
#define CELL int32_t
#endif
-CELL ngaImageCells = 15090;
-CELL ngaImage[] = { 1793,14503,15047,15089,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
+CELL ngaImageCells = 15169;
+CELL ngaImage[] = { 1793,14582,15126,15168,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10,
7,10,8,10,9,10,10,11,10,12,10,13,10,14,10,15,10,16,10,17,
10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,10,68223234,1,2575,
85000450,1,656912,139,138,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74,
@@ -12,7 +12,7 @@ CELL ngaImage[] = { 1793,14503,15047,15089,202010,0,10,1,10,2,10,3,10,4,10,5,10,
2049,112,117506307,0,105,0,524545,25,110,168820993,0,124,1642241,124,134283523,7,110,1793,105,7,
524545,2049,105,1793,105,16846593,124,139,138,1793,64,16846593,124,110,138,1793,64,7,10,659713,
1,659713,2,659713,3,1793,166,17108737,3,2,524559,105,2049,105,2049,105,2049,119,168820998,2,
- 13371,1025,167841793,179,5,17826049,0,179,2,15,25,524546,162,134287105,180,93,2305,181,459023,189,
+ 13755,1025,167841793,179,5,17826049,0,179,2,15,25,524546,162,134287105,180,93,2305,181,459023,189,
134287361,180,184,659201,179,2049,56,25,84152833,48,286458116,10,459014,204,184618754,45,25,16974851,-1,168886532,
1,134284289,1,213,134284289,0,204,660227,32,0,0,112,114,101,102,105,120,58,105,0,
285278479,230,7,2576,524546,79,1641217,1,167838467,227,2049,243,2049,239,524545,230,199,17826050,229,0,
@@ -160,7 +160,7 @@ CELL ngaImage[] = { 1793,14503,15047,15089,202010,0,10,1,10,2,10,3,10,4,10,5,10,
983556,1793,3087,1,21,2049,2100,10,1,3082,2049,2100,4100,10,3065,3105,144,118,58,117,
112,100,97,116,101,0,4,1793,3112,15,4,8,10,1,3108,2049,2110,16,10,3093,
3126,144,99,111,112,121,0,1793,3135,285278725,1,33951492,268767489,1,6,10,1,3128,2049,2275,
- 771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,14953,15005,10,3141,3163,
+ 771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,15032,15084,10,3141,3163,
144,123,123,0,2049,1570,2,1,3154,2049,59,16,10,3157,3188,144,45,45,45,114,
101,118,101,97,108,45,45,45,0,2049,1570,1,3154,2049,2890,16,10,3172,3202,144,
125,125,0,1,3154,2049,56,4,15,11,1793,3216,3841,3154,4097,2,10,1,3211,1793,
@@ -671,90 +671,94 @@ CELL ngaImage[] = { 1793,14503,15047,15089,202010,0,10,1,10,2,10,3,10,4,10,5,10,
13313,144,115,111,99,107,101,116,58,114,101,99,118,0,1,8,2049,13133,10,13298,
13334,144,115,111,99,107,101,116,58,99,108,111,115,101,0,1,10,2049,13133,10,
13318,13359,144,115,111,99,107,101,116,58,99,111,110,102,105,103,117,114,101,0,
- 1,11,2049,13133,10,13339,1024,131,84,73,66,0,13364,13385,144,105,109,97,103,101,
- 58,115,97,118,101,0,1,1000,2049,9139,2049,9122,10,13371,13404,131,75,101,121,98,
- 111,97,114,100,0,0,13392,13417,144,105,100,101,110,116,105,102,121,0,3841,13404,
- 2049,2527,1793,13484,1,1,2049,9139,2,2049,2562,1793,13472,3,2049,3646,73,79,32,68,
- 69,86,73,67,69,32,84,89,80,69,32,48,48,48,49,32,78,79,84,32,
- 70,79,85,78,68,0,1,13435,2049,9235,2049,9198,10,1,13432,1793,13479,4097,13404,10,
- 1,13476,2049,64,10,1,13423,9,10,13371,13497,144,99,58,103,101,116,0,2049,13417,
- 3841,13404,2049,9122,10,13488,13514,144,103,97,116,104,101,114,0,2,1793,13521,1,8,
- 11,10,1,13517,1793,13529,1,127,11,10,1,13525,2049,2122,22,1,11,1,3336,2049,
- 64,10,13504,13550,144,99,121,99,108,101,0,2049,13497,2049,2090,4,8,2049,2459,25,
- 3,2049,13514,1,13550,7,10,13488,13581,144,112,97,114,115,101,45,117,110,116,105,
- 108,0,1793,13593,2049,3627,2049,3428,2049,13550,771,2049,3302,10,1,13583,2049,3452,10,13566,
- 13607,144,115,58,103,101,116,0,1793,13629,1793,13615,1,10,11,10,1,13611,1793,13623,
- 1,13,11,10,1,13619,2049,2122,22,10,1,13609,2049,13581,10,13598,13648,144,115,58,
- 103,101,116,45,119,111,114,100,0,1,5592,2049,13581,10,13634,13666,131,83,99,114,
- 105,112,116,105,110,103,0,7,13653,13679,144,105,100,101,110,116,105,102,121,0,
- 3841,13666,2049,2527,1793,13746,1,9,2049,9139,2,2049,2562,1793,13734,3,2049,3646,73,79,
- 32,68,69,86,73,67,69,32,84,89,80,69,32,48,48,48,57,32,78,79,
- 84,32,70,79,85,78,68,0,1,13697,2049,9235,2049,9198,10,1,13694,1793,13741,4097,
- 13666,10,1,13738,2049,64,10,1,13685,9,10,13634,13762,144,115,121,115,58,97,114,
- 103,99,0,2049,13679,1,0,3841,13666,2049,9122,10,13750,13783,144,115,121,115,58,97,
- 114,103,118,0,2049,3627,4,2049,13679,1,1,3841,13666,2049,9122,10,13771,13806,144,105,
- 110,99,108,117,100,101,0,2049,13679,1,2,3841,13666,2049,9122,10,13795,13827,144,115,
- 121,115,58,110,97,109,101,0,2049,3627,2049,13679,1,3,3841,13666,2049,9122,10,13815,
- 13858,144,115,121,115,58,99,117,114,114,101,110,116,45,102,105,108,101,0,2049,
- 3627,2049,13679,1,4,3841,13666,2049,9122,10,13838,13889,144,115,121,115,58,99,117,114,
- 114,101,110,116,45,108,105,110,101,0,2049,13679,1,5,3841,13666,2049,9122,10,13869,
- 13919,144,115,121,115,58,105,103,110,111,114,101,45,116,111,45,101,111,108,0,
- 2049,13679,1,6,3841,13666,2049,9122,10,13898,13949,144,115,121,115,58,97,98,111,114,
- 116,45,105,110,99,108,117,100,101,0,2049,13679,1,7,3841,13666,2049,9122,10,13928,
- 13967,144,99,108,101,97,114,0,1,27,2049,9185,2049,3646,91,50,74,0,1,13973,
- 2049,9235,1,27,2049,9185,2049,3646,91,48,59,48,72,0,1,13987,2049,9235,10,13958,
- 14008,131,78,111,69,99,104,111,0,0,13998,14016,144,98,121,101,0,1,0,2049,
- 12446,10,14009,14028,131,69,79,84,0,0,14021,14041,131,73,103,110,111,114,105,110,
- 103,0,0,14029,14055,144,105,103,110,111,114,105,110,103,63,0,3841,14041,10,14042,
- 14069,144,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,14058,14084,144,100,
- 111,110,101,63,0,2,4097,14028,1793,14093,1,13,11,10,1,14089,1793,14101,1,10,
- 11,10,1,14097,1793,14109,1,32,11,10,1,14105,2049,2159,22,22,10,14075,14124,144,
- 101,111,108,63,0,3841,14028,1793,14132,1,13,11,10,1,14128,1793,14140,1,10,11,
- 10,1,14136,2049,2122,22,10,14116,14156,144,118,97,108,105,100,63,0,2,2049,79,
- 2049,2609,10,14146,14175,144,99,104,101,99,107,45,101,111,102,0,2,1793,14182,1,
- -1,11,10,1,14178,1793,14190,1,4,11,10,1,14186,2049,2122,22,1,14016,9,10,
- 14162,14205,144,98,115,0,2049,3360,2049,3360,771,10,14199,14223,144,99,104,101,99,107,
- 45,98,115,0,2,1793,14230,1,8,11,10,1,14226,1793,14238,1,127,11,10,1,
- 14234,2049,2122,22,1,14205,9,10,14211,14256,144,99,104,101,99,107,0,2049,14175,2049,
- 14223,10,14247,14274,144,99,104,97,114,97,99,116,101,114,0,2049,13497,2,2049,3336,
- 10,14261,14290,144,98,117,102,102,101,114,0,1793,14300,1,1024,2049,3428,8,2049,3302,
- 10,1,14292,2049,3452,10,14280,14319,144,114,101,97,100,45,116,111,107,101,110,0,
- 1793,14335,1793,14330,2049,14274,2049,14256,2049,14084,10,1,14323,2049,2250,10,1,14321,2049,14290,
- 2049,3724,10,14305,14351,144,105,110,112,117,116,0,2049,14319,2049,14156,10,14342,14367,144,
- 112,114,111,99,101,115,115,0,2049,14055,1793,14385,771,2049,14124,1793,14381,1,14041,2049,
- 3047,10,1,14376,9,10,1,14371,2049,2653,1,367,1,11,2049,64,10,14009,14402,156,
- 47,47,0,2049,13919,1,14041,2049,3034,10,14396,14419,144,98,97,110,110,101,114,0,
- 2049,14069,2049,3646,82,69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,
- 92,110,0,1,14423,2049,7212,2049,9235,2049,1543,2049,1874,18,2049,1874,2049,1543,2049,3646,
- 37,110,32,77,97,120,44,32,37,110,32,85,115,101,100,44,32,37,110,32,
- 70,114,101,101,92,110,0,1,14459,2049,7212,2049,9235,10,14409,14503,144,108,105,115,
- 116,101,110,0,3841,14008,1793,14510,2049,14419,10,1,14507,2049,70,2049,14351,2049,14367,1,
- 14514,7,10,14493,14531,131,67,108,111,99,107,0,0,14522,14544,144,105,100,101,110,
- 116,105,102,121,0,3841,14531,2049,2527,1793,14611,1,5,2049,9139,2,2049,2562,1793,14599,
- 3,2049,3646,73,79,32,68,69,86,73,67,69,32,84,89,80,69,32,48,48,
- 48,53,32,78,79,84,32,70,79,85,78,68,0,1,14562,2049,9235,2049,9198,10,
- 1,14559,1793,14606,4097,14531,10,1,14603,2049,64,10,1,14550,9,10,14493,14637,144,105,
- 111,58,99,108,111,99,107,45,111,112,101,114,97,116,105,111,110,0,2049,14544,
- 3841,14531,2049,9122,10,14615,14663,144,99,108,111,99,107,58,116,105,109,101,115,116,
- 97,109,112,0,1,0,2049,14637,10,14644,14681,144,99,108,111,99,107,58,100,97,
- 121,0,1,1,2049,14637,10,14668,14701,144,99,108,111,99,107,58,109,111,110,116,
- 104,0,1,2,2049,14637,10,14686,14720,144,99,108,111,99,107,58,121,101,97,114,
- 0,1,3,2049,14637,10,14706,14739,144,99,108,111,99,107,58,104,111,117,114,0,
- 1,4,2049,14637,10,14725,14760,144,99,108,111,99,107,58,109,105,110,117,116,101,
- 0,1,5,2049,14637,10,14744,14781,144,99,108,111,99,107,58,115,101,99,111,110,
- 100,0,1,6,2049,14637,10,14765,14803,144,99,108,111,99,107,58,117,116,99,58,
- 100,97,121,0,1,7,2049,14637,10,14786,14827,144,99,108,111,99,107,58,117,116,
- 99,58,109,111,110,116,104,0,1,8,2049,14637,10,14808,14850,144,99,108,111,99,
- 107,58,117,116,99,58,121,101,97,114,0,1,9,2049,14637,10,14832,14873,144,99,
- 108,111,99,107,58,117,116,99,58,104,111,117,114,0,1,10,2049,14637,10,14855,
- 14898,144,99,108,111,99,107,58,117,116,99,58,109,105,110,117,116,101,0,1,
- 11,2049,14637,10,14878,14923,144,99,108,111,99,107,58,117,116,99,58,115,101,99,
- 111,110,100,0,1,12,2049,14637,10,14903,14939,144,100,58,119,111,114,100,115,0,
- 1793,14948,2049,162,2049,9235,2049,9209,10,1,14941,2049,7441,10,14928,14969,144,100,58,119,
- 111,114,100,115,45,119,105,116,104,0,2049,1874,2049,4648,1793,15000,2049,162,2,2049,
- 1874,2049,4162,1793,14989,2049,9235,2049,9209,10,1,14984,1793,14995,3,10,1,14993,2049,64,
- 10,1,14975,2049,7441,10,14953,15024,144,100,105,115,112,108,97,121,45,105,102,45,
- 108,101,102,116,0,2,2049,1874,2049,4598,1793,15036,2049,9235,2049,9209,10,1,15031,1793,
- 15042,3,10,1,15040,2049,64,10,14953,15073,144,100,58,119,111,114,100,115,45,98,
- 101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1874,2049,4648,1793,15084,
- 2049,162,2049,15024,10,1,15079,2049,7441,10,0 };
+ 1,11,2049,13133,10,13339,13377,131,83,99,114,105,112,116,105,110,103,0,7,13364,
+ 13390,144,105,100,101,110,116,105,102,121,0,3841,13377,2049,2527,1793,13457,1,9,2049,
+ 9139,2,2049,2562,1793,13445,3,2049,3646,73,79,32,68,69,86,73,67,69,32,84,
+ 89,80,69,32,48,48,48,57,32,78,79,84,32,70,79,85,78,68,0,1,
+ 13408,2049,9235,2049,9198,10,1,13405,1793,13452,4097,13377,10,1,13449,2049,64,10,1,13396,
+ 9,10,13339,13481,144,115,99,114,105,112,116,58,97,114,103,117,109,101,110,116,
+ 115,0,2049,13390,1,0,3841,13377,2049,9122,10,13461,13513,144,115,99,114,105,112,116,
+ 58,103,101,116,45,97,114,103,117,109,101,110,116,0,2049,3627,4,2049,13390,1,
+ 1,3841,13377,2049,9122,10,13490,13536,144,105,110,99,108,117,100,101,0,2049,13390,1,
+ 2,3841,13377,2049,9122,10,13525,13560,144,115,99,114,105,112,116,58,110,97,109,101,
+ 0,2049,3627,2049,13390,1,3,3841,13377,2049,9122,10,13545,13594,144,115,99,114,105,112,
+ 116,58,99,117,114,114,101,110,116,45,102,105,108,101,0,2049,3627,2049,13390,1,
+ 4,3841,13377,2049,9122,10,13571,13628,144,115,99,114,105,112,116,58,99,117,114,114,
+ 101,110,116,45,108,105,110,101,0,2049,13390,1,5,3841,13377,2049,9122,10,13605,13661,
+ 144,115,99,114,105,112,116,58,105,103,110,111,114,101,45,116,111,45,101,111,
+ 108,0,2049,13390,1,6,3841,13377,2049,9122,10,13637,13694,144,115,99,114,105,112,116,
+ 58,97,98,111,114,116,45,105,110,99,108,117,100,101,0,2049,13390,1,7,3841,
+ 13377,2049,9122,10,13670,13715,144,115,121,115,58,97,114,103,99,0,2049,13481,10,13703,
+ 13730,144,115,121,115,58,97,114,103,118,0,2049,13513,10,13718,13745,144,115,121,115,
+ 58,110,97,109,101,0,2049,13560,10,13733,1024,131,84,73,66,0,13748,13769,144,105,
+ 109,97,103,101,58,115,97,118,101,0,1,1000,2049,9139,2049,9122,10,13755,13788,131,
+ 75,101,121,98,111,97,114,100,0,0,13776,13801,144,105,100,101,110,116,105,102,
+ 121,0,3841,13788,2049,2527,1793,13868,1,1,2049,9139,2,2049,2562,1793,13856,3,2049,3646,
+ 73,79,32,68,69,86,73,67,69,32,84,89,80,69,32,48,48,48,49,32,
+ 78,79,84,32,70,79,85,78,68,0,1,13819,2049,9235,2049,9198,10,1,13816,1793,
+ 13863,4097,13788,10,1,13860,2049,64,10,1,13807,9,10,13755,13881,144,99,58,103,101,
+ 116,0,2049,13801,3841,13788,2049,9122,10,13872,13898,144,103,97,116,104,101,114,0,2,
+ 1793,13905,1,8,11,10,1,13901,1793,13913,1,127,11,10,1,13909,2049,2122,22,1,
+ 11,1,3336,2049,64,10,13888,13934,144,99,121,99,108,101,0,2049,13881,2049,2090,4,
+ 8,2049,2459,25,3,2049,13898,1,13934,7,10,13872,13965,144,112,97,114,115,101,45,
+ 117,110,116,105,108,0,1793,13977,2049,3627,2049,3428,2049,13934,771,2049,3302,10,1,13967,
+ 2049,3452,10,13950,13991,144,115,58,103,101,116,0,1793,14013,1793,13999,1,10,11,10,
+ 1,13995,1793,14007,1,13,11,10,1,14003,2049,2122,22,10,1,13993,2049,13965,10,13982,
+ 14032,144,115,58,103,101,116,45,119,111,114,100,0,1,5592,2049,13965,10,14018,14046,
+ 144,99,108,101,97,114,0,1,27,2049,9185,2049,3646,91,50,74,0,1,14052,2049,
+ 9235,1,27,2049,9185,2049,3646,91,48,59,48,72,0,1,14066,2049,9235,10,14037,14087,
+ 131,78,111,69,99,104,111,0,0,14077,14095,144,98,121,101,0,1,0,2049,12446,
+ 10,14088,14107,131,69,79,84,0,0,14100,14120,131,73,103,110,111,114,105,110,103,
+ 0,0,14108,14134,144,105,103,110,111,114,105,110,103,63,0,3841,14120,10,14121,14148,
+ 144,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,14137,14163,144,100,111,
+ 110,101,63,0,2,4097,14107,1793,14172,1,13,11,10,1,14168,1793,14180,1,10,11,
+ 10,1,14176,1793,14188,1,32,11,10,1,14184,2049,2159,22,22,10,14154,14203,144,101,
+ 111,108,63,0,3841,14107,1793,14211,1,13,11,10,1,14207,1793,14219,1,10,11,10,
+ 1,14215,2049,2122,22,10,14195,14235,144,118,97,108,105,100,63,0,2,2049,79,2049,
+ 2609,10,14225,14254,144,99,104,101,99,107,45,101,111,102,0,2,1793,14261,1,-1,
+ 11,10,1,14257,1793,14269,1,4,11,10,1,14265,2049,2122,22,1,14095,9,10,14241,
+ 14284,144,98,115,0,2049,3360,2049,3360,771,10,14278,14302,144,99,104,101,99,107,45,
+ 98,115,0,2,1793,14309,1,8,11,10,1,14305,1793,14317,1,127,11,10,1,14313,
+ 2049,2122,22,1,14284,9,10,14290,14335,144,99,104,101,99,107,0,2049,14254,2049,14302,
+ 10,14326,14353,144,99,104,97,114,97,99,116,101,114,0,2049,13881,2,2049,3336,10,
+ 14340,14369,144,98,117,102,102,101,114,0,1793,14379,1,1024,2049,3428,8,2049,3302,10,
+ 1,14371,2049,3452,10,14359,14398,144,114,101,97,100,45,116,111,107,101,110,0,1793,
+ 14414,1793,14409,2049,14353,2049,14335,2049,14163,10,1,14402,2049,2250,10,1,14400,2049,14369,2049,
+ 3724,10,14384,14430,144,105,110,112,117,116,0,2049,14398,2049,14235,10,14421,14446,144,112,
+ 114,111,99,101,115,115,0,2049,14134,1793,14464,771,2049,14203,1793,14460,1,14120,2049,3047,
+ 10,1,14455,9,10,1,14450,2049,2653,1,367,1,11,2049,64,10,14088,14481,156,47,
+ 47,0,2049,13661,1,14120,2049,3034,10,14475,14498,144,98,97,110,110,101,114,0,2049,
+ 14148,2049,3646,82,69,84,82,79,32,49,50,32,40,37,110,46,37,110,41,92,
+ 110,0,1,14502,2049,7212,2049,9235,2049,1543,2049,1874,18,2049,1874,2049,1543,2049,3646,37,
+ 110,32,77,97,120,44,32,37,110,32,85,115,101,100,44,32,37,110,32,70,
+ 114,101,101,92,110,0,1,14538,2049,7212,2049,9235,10,14488,14582,144,108,105,115,116,
+ 101,110,0,3841,14087,1793,14589,2049,14498,10,1,14586,2049,70,2049,14430,2049,14446,1,14593,
+ 7,10,14572,14610,131,67,108,111,99,107,0,0,14601,14623,144,105,100,101,110,116,
+ 105,102,121,0,3841,14610,2049,2527,1793,14690,1,5,2049,9139,2,2049,2562,1793,14678,3,
+ 2049,3646,73,79,32,68,69,86,73,67,69,32,84,89,80,69,32,48,48,48,
+ 53,32,78,79,84,32,70,79,85,78,68,0,1,14641,2049,9235,2049,9198,10,1,
+ 14638,1793,14685,4097,14610,10,1,14682,2049,64,10,1,14629,9,10,14572,14716,144,105,111,
+ 58,99,108,111,99,107,45,111,112,101,114,97,116,105,111,110,0,2049,14623,3841,
+ 14610,2049,9122,10,14694,14742,144,99,108,111,99,107,58,116,105,109,101,115,116,97,
+ 109,112,0,1,0,2049,14716,10,14723,14760,144,99,108,111,99,107,58,100,97,121,
+ 0,1,1,2049,14716,10,14747,14780,144,99,108,111,99,107,58,109,111,110,116,104,
+ 0,1,2,2049,14716,10,14765,14799,144,99,108,111,99,107,58,121,101,97,114,0,
+ 1,3,2049,14716,10,14785,14818,144,99,108,111,99,107,58,104,111,117,114,0,1,
+ 4,2049,14716,10,14804,14839,144,99,108,111,99,107,58,109,105,110,117,116,101,0,
+ 1,5,2049,14716,10,14823,14860,144,99,108,111,99,107,58,115,101,99,111,110,100,
+ 0,1,6,2049,14716,10,14844,14882,144,99,108,111,99,107,58,117,116,99,58,100,
+ 97,121,0,1,7,2049,14716,10,14865,14906,144,99,108,111,99,107,58,117,116,99,
+ 58,109,111,110,116,104,0,1,8,2049,14716,10,14887,14929,144,99,108,111,99,107,
+ 58,117,116,99,58,121,101,97,114,0,1,9,2049,14716,10,14911,14952,144,99,108,
+ 111,99,107,58,117,116,99,58,104,111,117,114,0,1,10,2049,14716,10,14934,14977,
+ 144,99,108,111,99,107,58,117,116,99,58,109,105,110,117,116,101,0,1,11,
+ 2049,14716,10,14957,15002,144,99,108,111,99,107,58,117,116,99,58,115,101,99,111,
+ 110,100,0,1,12,2049,14716,10,14982,15018,144,100,58,119,111,114,100,115,0,1793,
+ 15027,2049,162,2049,9235,2049,9209,10,1,15020,2049,7441,10,15007,15048,144,100,58,119,111,
+ 114,100,115,45,119,105,116,104,0,2049,1874,2049,4648,1793,15079,2049,162,2,2049,1874,
+ 2049,4162,1793,15068,2049,9235,2049,9209,10,1,15063,1793,15074,3,10,1,15072,2049,64,10,
+ 1,15054,2049,7441,10,15032,15103,144,100,105,115,112,108,97,121,45,105,102,45,108,
+ 101,102,116,0,2,2049,1874,2049,4598,1793,15115,2049,9235,2049,9209,10,1,15110,1793,15121,
+ 3,10,1,15119,2049,64,10,15032,15152,144,100,58,119,111,114,100,115,45,98,101,
+ 103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1874,2049,4648,1793,15163,2049,
+ 162,2049,15103,10,1,15158,2049,7441,10,0 };