--- gforth/ans-report.fs 1999/05/17 13:52:18 1.4 +++ gforth/ans-report.fs 2009/05/24 17:36:36 1.19 @@ -1,12 +1,12 @@ \ report words used from the various wordsets -\ Copyright (C) 1996,1998 Free Software Foundation, Inc. +\ Copyright (C) 1996,1998,1999,2003,2005,2006,2007 Free Software Foundation, Inc. \ This file is part of Gforth. \ Gforth is free software; you can redistribute it and/or \ 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. \ This program is distributed in the hope that it will be useful, @@ -15,8 +15,7 @@ \ GNU General Public License for more details. \ You should have received a copy of the GNU General Public License -\ along with this program; if not, write to the Free Software -\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +\ along with this program. If not, see http://www.gnu.org/licenses/. \ Use this program like this: @@ -42,16 +41,17 @@ vocabulary ans-report-words ans-report-words definitions : wordset ( "name" -- ) - lastxt >body + latestxt >body create 0 , \ link to next wordset 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 create CORE 0 , 0 0 2, wordset CORE-EXT +wordset CORE-EXT-obsolescent wordset BLOCK wordset BLOCK-EXT wordset DOUBLE @@ -72,23 +72,42 @@ wordset SEARCH-EXT wordset STRING wordset TOOLS 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 + ans-report-words definitions -: answord ( "name wordset pronounciation" -- ) - \ check the documentaion of an ans word - name { D: wordname } - name { D: wordset } - name { D: pronounciation } +: standardword { D: wordname D: wordset -- } wordname find-name ?dup-if sp@ cell nextname create drop - wordset wordsets search-wordlist 0= abort" wordlist unknown" , + wordset wordsets search-wordlist 0= abort" wordset unknown" , 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 warnings @ warnings off include ./answords.fs +include ./xwords.fs warnings ! ans-report-words definitions @@ -133,8 +152,24 @@ ans-report-words definitions : replace-word ( xt cfa -- ) \ replace word at cfa with xt. !! This is quite general-purpose \ and should migrate elsewhere. - dodefer: over code-address! - >body ! ; + \ the following no longer works with primitive-centric hybrid threading: + \ 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 ans-report-words @@ -149,12 +184,7 @@ ans-report-words dup >r name>int >body dup @ swap cell+ 2@ dup if ." from " r@ .name ." :" cr - bounds - u+do - i @ .name - cell - +loop - cr + bounds print-names cr else 2drop endif