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

## Name

pfe-stackhelp-ext ? StackHelp TypeChecking extension

## Synopsis

`|( ( [string&lt;rp&gt;] -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`STACKHELP ( [name] -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`STACKHELPS ( [name] -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`STACKHELP-DEBUG ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-CHANGER( ( changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUTLIST( ( changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUTLIST( ( changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUT-VARIANT( ( variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUT-VARIANT( ( variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUT-STACK( ( stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUT-STACK( ( stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUT-ARGUMENT-TYPE( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUT-ARGUMENT-TYPE( ( arg# stk-char which# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`CANONIC-INPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`CANONIC-OUTPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITER-TEST( ( "tracked-stack -- input-stack&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITER-INPUT-ARG( ( arg# "tracked-stack -- changer&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-LINE( ( "stack-layout&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-SHOW. ( -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-STACK-TEST( ( "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-INPUT-ARG( ( arg# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-STACK-RESULT( ( "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-INPUT-NOTATION( ( notation# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`NARROW-OUTPUT-NOTATION( ( notation# changer# "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-STACKDEF-TEST( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-STACKDEF-RESULT( ( "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-CHANGER-SELECT( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-CHANGER-EXPAND( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-CHANGER-RESULT( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-TEST( ( "stackhelp&lt;rp&gt;" -- ) ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-SELECT( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-EXPAND( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

`REWRITE-RESULT( ?=>? (` | `)`; | ?

`"EXTENSIONS"`;
?

## Description

|( ( [string&lt;rp&gt;] -- ) [EXT] => "EXTENSIONS"

add a checkstack notation for the LAST word or just try to match the given notation with the stacklayout traced so far - possibly casting a few types as needed.

STACKHELP ( [name] -- ) [EXT] => "EXTENSIONS"

show the stackhelp info registered for this name.

STACKHELPS ( [name] -- ) [EXT] => "EXTENSIONS"

show all possible stackhelps for this name.

STACKHELP-DEBUG - no description, sorry

NARROW-CHANGER( ( changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

NARROW-INPUTLIST( ( changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

NARROW-OUTPUTLIST( ( changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

NARROW-INPUT-VARIANT( ( variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F'

NARROW-OUTPUT-VARIANT( ( variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

NARROW-INPUT-STACK( ( stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F'

NARROW-OUTPUT-STACK( ( stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

NARROW-INPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

NARROW-OUTPUT-ARGUMENT( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

NARROW-INPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

NARROW-OUTPUT-ARGUMENT-NAME( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

NARROW-INPUT-ARGUMENT-TYPE( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

NARROW-OUTPUT-ARGUMENT-TYPE( ( arg# stk-char which# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

CANONIC-INPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

0 = default, 1 = 'S', 2 = 'R', ... 4 = 'P', ... 7 = 'M', .. 14 = 'F' arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

CANONIC-OUTPUT-TYPE( ( arg# stk-char variant# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

arg# is [0] = TOS and [1] = UNDER, same as the pick values where 3 2 1 0 2 pick . =:= 2

REWRITER-TEST( ( "tracked-stack -- input-stack&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

suppose that the left side is a tracked stack line during compiling and the right side is a candidate changer input stack. Test whethr the candidate does match and the complete changer would be allowed to run a rewrite in the track stack buffer.

Possible conditions include: the left side has not enough arguments or... any argument on the right side has a type specialization that does not match as a valid suffix to their counterpart on the left side.

REWRITER-INPUT-ARG( ( arg# "tracked-stack -- changer&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

suppose that the left side is a tracked stack line during compiling and the right side is a candidate changer input stack. Assume the righthand candidate does match - look at the given argument on the left side and show the prefix being copied to the output trackstack when the rewrite-rule is gettin applied later.

REWRITE-LINE( ( "stack-layout&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

fill rewrite-buffer with a stack-layout to be processed. see `REWRITE-SHOW.`

REWRITE-SHOW. ( -- ) [EXT] => "EXTENSIONS"

show current rewrite-buffer.

REWRITE-STACK-TEST( ( "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

check whether this stackhelp does match on current rewrite-buffer and say oK/No respectivly.

REWRITE-INPUT-ARG( ( arg# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

check whether this stackhelp does match on current rewrite-buffer and in the given input match show us the argument but only the good prefix i.e. the type constraint being cut off already.

REWRITE-STACK-RESULT( ( "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

rewrite the current rewrite-buffer and show the result that would occur with this stackhelp being applied.

NARROW-INPUT-NOTATION( ( notation# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

NARROW-OUTPUT-NOTATION( ( notation# changer# "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

REWRITE-STACKDEF-TEST( - no description, sorry

REWRITE-STACKDEF-RESULT( ( "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

assume: only one changer (if more are provided then only the first is used) only one stackdef variant in inputlist

REWRITE-CHANGER-SELECT( - no description, sorry

REWRITE-CHANGER-EXPAND( - no description, sorry

REWRITE-CHANGER-RESULT( - no description, sorry

REWRITE-TEST( ( "stackhelp&lt;rp&gt;" -- ) [EXT] => "EXTENSIONS"

Test whether the given changer would match the current line. assume: only one changer (if more are provided then only the first is used)

REWRITE-SELECT( - no description, sorry

REWRITE-EXPAND( - no description, sorry

REWRITE-RESULT( - no description, sorry

Prev? | Up | ?Next
pfe-smart-go-ext? | Home | ?pfe-string-ext