| \ report words used from the various wordsets |
\ report words used from the various wordsets |
| |
|
| \ Copyright (C) 1996,1998,1999 Free Software Foundation, Inc. |
\ Copyright (C) 1996,1998,1999,2003,2005,2006,2007,2009 Free Software Foundation, Inc. |
| |
|
| \ This file is part of Gforth. |
\ This file is part of Gforth. |
| |
|
| \ Gforth is free software; you can redistribute it and/or |
\ Gforth is free software; you can redistribute it and/or |
| \ modify it under the terms of the GNU General Public License |
\ modify it under the terms of the GNU General Public License |
| \ as published by the Free Software Foundation; either version 2 |
\ as published by the Free Software Foundation, either version 3 |
| \ of the License, or (at your option) any later version. |
\ of the License, or (at your option) any later version. |
| |
|
| \ This program is distributed in the hope that it will be useful, |
\ This program is distributed in the hope that it will be useful, |
| \ GNU General Public License for more details. |
\ GNU General Public License for more details. |
| |
|
| \ You should have received a copy of the GNU General Public License |
\ You should have received a copy of the GNU General Public License |
| \ along with this program; if not, write to the Free Software |
\ along with this program. If not, see http://www.gnu.org/licenses/. |
| \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
|
| |
|
| |
|
| \ Use this program like this: |
\ Use this program like this: |
| vocabulary ans-report-words ans-report-words definitions |
vocabulary ans-report-words ans-report-words definitions |
| |
|
| : wordset ( "name" -- ) |
: wordset ( "name" -- ) |
| lastxt >body |
latestxt >body |
| create |
create |
| 0 , \ link to next wordset |
0 , \ link to next wordset |
| 0 0 2, \ array of nfas |
0 0 2, \ array of nfas |
| ( lastlinkp ) last @ swap ! \ set link ptr of last wordset |
( lastlinkp ) latest swap ! \ set link ptr of last wordset |
| ; |
; |
| |
|
| wordlist constant wordsets wordsets set-current |
wordlist constant wordsets wordsets set-current |
| create CORE 0 , 0 0 2, |
create CORE 0 , 0 0 2, |
| wordset CORE-EXT |
wordset CORE-EXT |
| |
wordset CORE-EXT-obsolescent |
| wordset BLOCK |
wordset BLOCK |
| wordset BLOCK-EXT |
wordset BLOCK-EXT |
| wordset DOUBLE |
wordset DOUBLE |
| wordset STRING |
wordset STRING |
| wordset TOOLS |
wordset TOOLS |
| wordset TOOLS-EXT |
wordset TOOLS-EXT |
| |
wordset TOOLS-EXT-obsolescent |
| |
|
| |
\ www.forth200x.org CfV extension names |
| |
wordset X:deferred |
| |
wordset X:extension-query |
| |
wordset X:parse-name |
| |
wordset X:defined |
| |
wordset X:required |
| |
wordset X:ekeys |
| |
wordset X:fp-stack |
| |
wordset X:number-prefixes |
| |
wordset X:structures |
| |
wordset X:ftrunc |
| |
|
| wordset non-ANS |
wordset non-ANS |
| |
|
| ans-report-words definitions |
ans-report-words definitions |
| |
|
| : answord ( "name wordset pronounciation" -- ) |
: standardword { D: wordname D: wordset -- } |
| \ check the documentaion of an ans word |
|
| name { D: wordname } |
|
| name { D: wordset } |
|
| name { D: pronounciation } |
|
| wordname find-name |
wordname find-name |
| ?dup-if |
?dup-if |
| sp@ cell nextname create drop |
sp@ cell nextname create drop |
| wordset wordsets search-wordlist 0= abort" wordlist unknown" , |
wordset wordsets search-wordlist 0= abort" wordset unknown" , |
| endif ; |
endif ; |
| |
|
| |
: answord ( "name wordset pronounciation" -- ) |
| |
\ check the documentation of an ans word |
| |
parse-name parse-name parse-name 2drop standardword ; |
| |
|
| |
: xword ( "name wordset" ) |
| |
parse-name parse-name standardword ; |
| |
|
| table constant answords answords set-current |
table constant answords answords set-current |
| warnings @ warnings off |
warnings @ warnings off |
| include ./answords.fs |
include ./answords.fs |
| |
include ./xwords.fs |
| warnings ! |
warnings ! |
| ans-report-words definitions |
ans-report-words definitions |
| |
|
| : replace-word ( xt cfa -- ) |
: replace-word ( xt cfa -- ) |
| \ replace word at cfa with xt. !! This is quite general-purpose |
\ replace word at cfa with xt. !! This is quite general-purpose |
| \ and should migrate elsewhere. |
\ and should migrate elsewhere. |
| dodefer: over code-address! |
\ the following no longer works with primitive-centric hybrid threading: |
| >body ! ; |
\ dodefer: over code-address! |
| |
\ >body ! ; |
| |
dup @ docol: <> -12 and throw \ for colon defs only |
| |
>body ['] branch xt>threaded over ! |
| |
cell+ >r >body r> ! ; |
| |
|
| |
: print-names ( endaddr startaddr -- ) |
| |
space 1 -rot |
| |
u+do ( pos ) |
| |
i @ name>string nip 1+ { len } |
| |
len + ( newpos ) |
| |
dup cols 4 - >= if |
| |
cr space drop len 1+ |
| |
endif |
| |
i @ .name |
| |
cell +loop |
| |
drop ; |
| |
|
| forth definitions |
forth definitions |
| ans-report-words |
ans-report-words |
| dup >r name>int >body dup @ swap cell+ 2@ dup |
dup >r name>int >body dup @ swap cell+ 2@ dup |
| if |
if |
| ." from " r@ .name ." :" cr |
." from " r@ .name ." :" cr |
| bounds |
bounds print-names cr |
| u+do |
|
| i @ .name |
|
| cell |
|
| +loop |
|
| cr |
|
| else |
else |
| 2drop |
2drop |
| endif |
endif |