Annotation of gforth/smartdots.fs, revision 1.2

1.2     ! pazsan      1: \ smart .s                                             09mar2012py
        !             2: 
        !             3: \ Copyright (C) 1995,1998,1999,2001,2003,2006,2007,2011 Free Software Foundation, Inc.
        !             4: 
        !             5: \ This file is part of Gforth.
        !             6: 
        !             7: \ Gforth is free software; you can redistribute it and/or
        !             8: \ modify it under the terms of the GNU General Public License
        !             9: \ as published by the Free Software Foundation, either version 3
        !            10: \ of the License, or (at your option) any later version.
        !            11: 
        !            12: \ This program is distributed in the hope that it will be useful,
        !            13: \ but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            14: \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            15: \ GNU General Public License for more details.
        !            16: 
        !            17: \ You should have received a copy of the GNU General Public License
        !            18: \ along with this program. If not, see http://www.gnu.org/licenses/.
        !            19: 
        !            20: \ idea: Gerald Wodni
1.1       pazsan     21: 
                     22: : addr? ( addr -- flag )
1.2     ! pazsan     23:     TRY  @  IFERROR  2drop  false nothrow  ELSE  drop  true  THEN   ENDTRY ;
1.1       pazsan     24: 
                     25: : string? ( addr u -- flag )
                     26:     TRY  bounds ?DO  I c@ bl < IF  -1 throw  THEN  LOOP
1.2     ! pazsan     27:        IFERROR  2drop drop false nothrow ELSE  true  THEN  ENDTRY ;
1.1       pazsan     28: 
                     29: : .string. ( addr u -- )
                     30:     '"' emit type '"' emit space ;
                     31: : .addr. ( addr -- )  hex. ;
                     32: 
1.2     ! pazsan     33: Variable smart.s-skip
        !            34: 
        !            35: : smart.s. ( n -- )
        !            36:     smart.s-skip @  smart.s-skip off IF  drop  EXIT  THEN
        !            37:     over r> i swap >r - pick  2dup string? IF
        !            38:        .string. smart.s-skip on
        !            39:     ELSE  drop dup addr? IF  .addr.
        !            40:        ELSE  .  THEN
        !            41:     THEN ;
        !            42: 
        !            43: ' smart.s. IS .s.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>