Annotation of gforth/smartdots.fs, revision 1.7

1.2       pazsan      1: \ smart .s                                             09mar2012py
                      2: 
1.4       pazsan      3: \ Copyright (C) 2012 Free Software Foundation, Inc.
1.2       pazsan      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.6       pazsan     23:     TRY  c@  IFERROR  2drop  false nothrow  ELSE  drop  true  THEN   ENDTRY ;
1.1       pazsan     24: 
                     25: : string? ( addr u -- flag )
1.6       pazsan     26:     TRY  dup #80 u> throw  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 -- )
1.3       pazsan     30:     .\" s\" " type '"' emit space ;
1.7     ! pazsan     31: : .addr. ( addr -- )
        !            32:     dup >name dup IF  ." ' " .name drop  ELSE  drop hex.  THEN ;
1.1       pazsan     33: 
1.2       pazsan     34: Variable smart.s-skip
                     35: 
                     36: : smart.s. ( n -- )
                     37:     smart.s-skip @  smart.s-skip off IF  drop  EXIT  THEN
1.5       pazsan     38:     over r> i swap >r -
                     39:     dup 1 = IF  false  ELSE  pick  2dup string?  THEN  IF
1.2       pazsan     40:        .string. smart.s-skip on
                     41:     ELSE  drop dup addr? IF  .addr.
                     42:        ELSE  .  THEN
                     43:     THEN ;
                     44: 
1.6       pazsan     45: ' smart.s. IS .s.

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