| Variable tag-option |
Variable tag-option |
| s" " tag-option $! |
s" " tag-option $! |
| |
|
| |
: .type ( addr u -- ) |
| |
bounds ?DO I c@ |
| |
case |
| |
'& of ." &" endof |
| |
'< of ." <" endof |
| |
dup emit |
| |
endcase |
| |
LOOP ; |
| |
|
| : tag ( addr u -- ) '< emit type tag-option $@ type '> emit |
: tag ( addr u -- ) '< emit type tag-option $@ type '> emit |
| s" " tag-option $! ; |
s" " tag-option $! ; |
| : tag/ ( addr u -- ) s" /" tag-option $+! tag ; |
: tag/ ( addr u -- ) s" /" tag-option $+! tag ; |
| : /tag ( addr u -- ) '< emit '/ emit type '> emit ; |
: /tag ( addr u -- ) '< emit '/ emit type '> emit ; |
| : tagged ( addr1 u1 addr2 u2 -- ) 2dup 2>r tag type 2r> /tag ; |
: tagged ( addr1 u1 addr2 u2 -- ) 2dup 2>r tag .type 2r> /tag ; |
| |
|
| : opt ( addr u opt u -- ) s" " tag-option $+! |
: opt ( addr u opt u -- ) s" " tag-option $+! |
| tag-option $+! s' ="' tag-option $+! tag-option $+! |
tag-option $+! s' ="' tag-option $+! tag-option $+! |
| \ line handling |
\ line handling |
| |
|
| : char? ( -- c ) >in @ char swap >in ! ; |
: char? ( -- c ) >in @ char swap >in ! ; |
| |
|
| : parse-tag ( addr u char -- ) |
: parse-tag ( addr u char -- ) |
| >r r@ parse type |
>r r@ parse .type |
| r> parse 2swap tagged ; |
r> parse 2swap tagged ; |
| |
|
| : .text ( -- ) >in @ >r char drop |
: .text ( -- ) >in @ >r char drop |
| source r@ /string >in @ r> - nip |
source r@ /string >in @ r> - nip .type ; |
| bounds ?DO I c@ |
|
| case |
|
| '& of ." &" endof |
|
| '< of ." <" endof |
|
| dup emit |
|
| endcase |
|
| LOOP ; |
|
| |
|
| Create do-words $100 0 [DO] ' .text , [LOOP] |
Create do-words $100 0 [DO] ' .text , [LOOP] |
| |
|