PFE 0.33.71

Homepage
SourceForge
Download
Documentation
-Overview
-The PFE Manual
old manual / (book)
-ChangeLog
-Authors
-License (LGPL)
-Wordsets / (book)
-Functions .. (book)
-Dp of ANS Forth
-The 4thTutor
-Forthprimer.pdf
- Old Wordsets
- Old Words List
Forth Links
* Forth Repository
* Taygeta Compilation
* TinyBoot FirmWare
* FiCL, Free Forth
* Research Vienna
* Research Bournemouth
* zForth WebRing
Other Links
* Tektronix/MPT
* Forth Org. (FIG)
* Forth Inc.
* MPE Ltd. Forths
* SF Win32Forth
* PD Win32Forth
* Neil Bawd

generated
(C) Guido U. Draheim
guidod@gmx.de

## MODULE

> - simple module implementation

`MODULE``( "name" -- old-current )``` => `"EXTENSIONS"`

  create a new `WORDLIST` with the given name. It will also have an implicit hidden vocabulary just as well and all `DEFINITIONS` will go into that hidden wordlist. Therefore the old `CURRENT` is memorized on the cs-stack.

  effectivly, CONTEXT[1] will have the wordlist-id of the public wordlist "name" and CONTEXT[0] will have the hidden wordlist contained in "name" - the hidden wordlist will always be known as HIDDEN' so that it can be re-referenced without need to use `ALSO` just to access a single definition from just another vocabulary. Note that HIDDEN' is defined immediate (a `VOCABULARY'` ) to modify the `ORDER` inside a colon definition.

        : MODULE
          CURRENT @ ( -- old-current )
          VOCABULARY
          ALSO LATEST NAME> EXECUTE ALSO DEFINITIONS
          C" HIDDEN'" $CREATE WORDLIST CONTEXT !
        ;

  primitive code = [p4_module]

`END-MODULE``( old-current -- )``` => `"EXTENSIONS"`

  clean up the cs-stack from the last `MODULE` definition. Effectivly, MODULE definitions can be nested.

        : END-MODULE ( old-current )
          PREVIOUS PREVIOUS CURRENT !

  primitive code = [p4_end_module]

`EXPORT``( old-current "name" -- old-current )``` => `"EXTENSIONS"`

  the named word in the hidden dictionary (i.e. the wordlist referenced in `CURRENT`) is exported into the public wordlist of it (i.e. which is in this implementation `CONTEXT`[1]). The actual implemenation will create a `DEFER`-word in the public wordlist withits parameter area pointing to the cfa of the hidden implementation.

        : EXPORT
          CURRENT @ CONTEXT CELL+ @ CURRENT !
          DEFER CURRENT !
          LATEST COUNT CURRENT @ SEARCH-WORDLIST
          IF LATEST NAME> >BODY ! ELSE ABORT" can't find word to export" THEN
        ;

  primitive code = [p4_export]

`EXPOSE-MODULE``( "name" -- )``` => `"EXTENSIONS"`

  affects the search order, ALSO module-wid CONTEXT ! hidden'

        : EXPOSE-MODULE
           ALSO S" HIDDEN'"
           ' DUP VOC? ABORT?" is no vocabulary" >VOC
           SEARCH-WORDLIST 0= IF " no hidden vocabulary found" THEN
           DUP VOC? ABORT?" hidden is no vocabulary" EXECUTE
        ;

  primitive code = [p4_expose_module]

`ALSO-MODULE``( "name" -- )``` => `"EXTENSIONS"`

  affects the search-order, ALSO module-wid CONTEXT !

        : ALSO-MODULE
          ' DUP VOC? ABORT?" is no vocabulary"
          ALSO EXECUTE
        ;

  primitive code = [p4_also_module]