pfe-chainlist-ext
Prev? | pfe Forth Wordset List | ?Next

## Name

pfe-chainlist-ext ? chainlists - executable wordlists

## Synopsis

`NEW-WORDLIST ( "name" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`.WORDS ( some-wordlist* -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REDO-ALL-WORDS ( some-wordlist* -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`DO-ALL-WORDS ( some-wordlist* -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`DO-ALL-WORDS-WHILE-LOOP ( some-wordlist* test-xt* -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`DO-ALL-WORDS-WHILE ( some-wordlist* "word" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`DO-SYNONYM ( some-wordlist* "do-name" "orig-name" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`DO-ALIAS ( some-xt* definition-wordlist* "do-name" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`ALIAS-ATEXIT ( some-xt* "name" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

## Description

ABORT-WORDLIST ( -- abort-redo-wordlist* ) [EXT] * * => ABORT inits will run this wordlist, first added being run first : ABORT ... ABORT-WORDLIST REDO-ALL-WORDS ... ; WORDLIST VALUE ABORT-WORDLIST * => REDO-ALL-WORDS / => PROMPT-WORDLIST

NEW-WORDLIST ( "name" -- ) [EXT] [DOES: -- new-wordlist* ] => "EXTENSIONS"

create a new `WORDLIST` and a "name" with a runtime of ( -- wordlist* )

      : NEW-WORDLIST WORDLIST VALUE ;
      : NEW-WORDLIST CREATE: WORDLIST ;

usually used for `DO-ALL-WORDS` / `DO-SYNONYM`

.WORDS ( some-wordlist* -- ) [EXT] => "EXTENSIONS"

print the `WORDLIST` interactivly to the user

      : .WORDS ALSO SET-CONTEXT WORDS PREVIOUS ;

`WORDS` / `ORDER` / `NEW-WORDLIST` / `DO-ALL-WORDS`

REDO-ALL-WORDS ( some-wordlist* -- ) [EXT] => "EXTENSIONS"

`EXECUTE` each entry in the wordlist in the original order defined

      : REDO-ALL-WORDS
           0 FIRST-NAME
           0 SWAP ( under )
           BEGIN ?DUP WHILE
              DUP NAME&gt; SWAP ( under )
              NAME-NEXT
           REPEAT
           BEGIN ?DUP WHILE
              EXECUTE
           REPEAT
      ;

to run the `NEW-WORDLIST` in last-run-first order, use `DO-ALL-WORDS`

DO-ALL-WORDS ( some-wordlist* -- ) [EXT] => "EXTENSIONS"

`EXECUTE` each entry in the wordlist in the reverse order defined

      : DO-ALL-WORDS
           0 FIRST-NAME
           BEGIN ?DUP WHILE
              DUP NAME&gt; EXECUTE
              NAME-NEXT
           REPEAT
      ;

to run the `NEW-WORDLIST` in original order, use `REDO-ALL-WORDS`

DO-ALL-WORDS-WHILE-LOOP ( some-wordlist* test-xt* -- ) [EXT] => "EXTENSIONS"

`EXECUTE` each entry in the wordlist in the reverse order defined but only as long as after EXECUTE of "word" a TRUE flag is left on the stack. The wordlist execution is cut when a FALSE flag is seen. (the current wordlist entry is _not_ on the stack!)

      : DO-ALL-WORDS-WHILE-LOOP &gt;R
           0 FIRST-NAME
           BEGIN ?DUP WHILE
              R@ EXECUTE 0= IF R&gt;DROP DROP EXIT THEN
              DUP NAME&gt; EXECUTE
              NAME-NEXT
           REPEAT R&gt;DROP
      ;

compare with `DO-ALL-WORDS-WHILE`

DO-ALL-WORDS-WHILE ( some-wordlist* "word" -- ) [EXT] => "EXTENSIONS"

`EXECUTE` each entry in the wordlist in the reverse order defined but only as long as after EXECUTE of "word" a TRUE flag is left on the stack. The wordlist execution is cut when a FALSE flag is seen. (the current wordlist entry is _not_ on the stack!)

      : DO-ALL-WORDS-WHILE '
           STATE @ IF LITERAL, COMPILE DO-ALL-WORDS-WHILE-LOOP EXIT THEN
           &gt;R 0 FIRST-NAME
           BEGIN ?DUP WHILE
              R@ EXECUTE 0= IF R&gt;DROP DROP EXIT THEN
              DUP NAME&gt; EXECUTE
              NAME-NEXT
           REPEAT R&gt;DROP
      ;

to run the `NEW-WORDLIST` in original order, use `REDO-ALL-WORDS`

DO-SYNONYM ( some-wordlist* "do-name" "orig-name" -- ) [EXT] => "EXTENSIONS"

create a `SYNONYM` in the specified wordlist.

      : DO-SYNONYM GET-CURRENT SWAP SET-CURRENT SYNONYM SET-CURRENT ;

`DO-ALIAS` / `DO-ALL-WORDS` / `NEW-WORDLIST` / `WORDLIST` / `ORDER`

DO-ALIAS ( some-xt* definition-wordlist* "do-name" -- ) [EXT] => "EXTENSIONS"

create an `ALIAS` with the exec-token in the specified wordlist

      : DO-ALIAS GET-CURRENT SWAP SET-CURRENT SWAP ALIAS SET-CURRENT ;

`DO-SYNONYM`

ALIAS-ATEXIT ( some-xt* "name" -- ) [EXT] => "EXTENSIONS"

create a defer word that is initialized with the given x-token.

      : ALIAS-ATEXIT ATEXIT-WORDLIST DO-ALIAS ;

`ATEXIT-WORDLIST` `DO-ALL-WORDS`

Prev? | Up | ?Next
pfe-chain-ext? | Home | ?pfe-complex-ext