\ 4tH library - PARSE XML - Copyright 2008 J.L. Bezemer \ You can redistribute this file and/or modify it under \ the terms of the GNU General Public License [UNDEFINED] skip-tag [IF] [UNDEFINED] COMPARE [IF] [NEEDS lib/compare.4th] [THEN] [UNDEFINED] 2OVER [IF] [NEEDS lib/2rotover.4th] [THEN] char > constant '>' \ > character char < constant '<' \ < character : parse-tag ( -- a n) bl omit >in @ >r '>' parse dup if over c@ '<' = if 1+ else 2drop r@ >in ! '<' parse -1 >in +! then then r> drop ; \ parse a tag ( -- a n) : next-tag begin parse-tag dup if exit then refill while 2drop repeat ; \ check for a tag : check-tag ( a n --) next-tag 2dup 2>r compare if cout stdout use 2r> type ." not expected here" cr use else 2r> 2drop then ; \ find a tag : search-tag ( a n --) begin next-tag dup while 2over 2over compare while 2drop repeat 2drop 2drop ; \ check whether a tag is there : expect-tag next-tag compare 0= ; ( a n -- f) : skip-tag next-tag 2drop ; ( --) \ skip a tag [DEFINED] 4TH# [IF] hide parse-tag [THEN] [THEN]