From 660e52bdcbc722f6883df75ad147b95fc4b3959f Mon Sep 17 00:00:00 2001 From: crc Date: Mon, 14 Sep 2020 19:55:02 +0000 Subject: [PATCH] rename words in sys: to script: (old names still work in this release, but are deprecated) FossilOrigin-Name: 1a43743f43076eb087ee4dd7fbfa96b8dfda2aa4ddcff41e6a5a9634ba6e239c --- Makefile | 4 +- RELEASE-NOTES | 12 +- doc/Glossary-Concise.txt | 39 ++-- doc/Glossary-Names-and-Stack.txt | 11 +- doc/Glossary.html | 83 +++++--- doc/Glossary.txt | 127 +++++++----- doc/words.tsv | 17 +- example/Cat.retro | 2 +- example/Echo.retro | 4 +- example/TokiPona-Translate.retro | 2 +- example/atua-gophermap.retro | 2 +- .../display-word-location-information.retro | 6 +- example/edit.retro | 6 +- example/export-as-html.retro | 4 +- example/export-muri-as-html.retro | 6 +- example/markdown.retro | 4 +- example/retro-extend.retro | 2 +- example/retro-locate.retro | 2 +- example/retro-muri.retro | 4 +- example/retro-tags.retro | 8 +- example/retro-unu.retro | 2 +- example/share.retro | 4 +- example/strip-html.retro | 2 +- example/uudecode.retro | 2 +- example/uuencode.retro | 6 +- interface/retro-unix.retro | 29 +-- tools/glossary.retro | 6 +- tools/retro-describe.retro | 6 +- vm/nga-c/retro-image.c | 186 +++++++++--------- 29 files changed, 320 insertions(+), 268 deletions(-) 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 @@ '__hello__ s:trim-right


+

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-
Addr: -
@@ -3454,54 +3503,26 @@

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

sys:argv

Data: n-s
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

sys:name

Data: -s
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

tab

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 };