Diff for /gforth/regexp.fs between versions 1.18 and 1.19

version 1.18, 2010/09/05 22:18:54 version 1.19, 2010/09/12 16:18:31
Line 163  Variable varsmax Line 163  Variable varsmax
     ]] FORK  AHEAD BUT JOIN !end [[ BEGIN, ; immediate      ]] FORK  AHEAD BUT JOIN !end [[ BEGIN, ; immediate
 : )) ( -- addr f ) \ regexp-pattern  : )) ( -- addr f ) \ regexp-pattern
     \G end regexp block      \G end regexp block
     ]] ?end drop true EXIT [[      ]] ?end drop true ;S [[
     DONE, ]] drop false EXIT THEN [[ ; immediate      DONE, ]] drop false ;S THEN [[ ; immediate
   
 \ greedy loops  \ greedy loops
   
Line 182  Variable varsmax Line 182  Variable varsmax
 : n*} ( sys n -- ) \ regexp-pattern  : n*} ( sys n -- ) \ regexp-pattern
     \G At least @var{n} pattern      \G At least @var{n} pattern
     >r ]] r> 1+ >r end-rex? 0= UNTIL dup [[ DONE, ]] drop [[      >r ]] r> 1+ >r end-rex? 0= UNTIL dup [[ DONE, ]] drop [[
     r@ IF r@ ]] r@ Literal u< IF  r> 1+ drops false  EXIT  THEN [[ THEN      r@ IF r@ ]] r@ Literal u< IF  r> 1+ drops false  ;S  THEN [[ THEN
     r@ ]] r> 1+ Literal U+DO FORK BUT [[      r@ ]] r> 1+ Literal U+DO FORK BUT [[
     ]] IF  I' I - [[ r@ 1- ]] Literal + drops true UNLOOP EXIT  THEN  LOOP [[      ]] IF  I' I - [[ r@ 1- ]] Literal + drops true UNLOOP ;S  THEN  LOOP [[
     r@ IF  r@ ]] Literal drops [[ THEN      r@ IF  r@ ]] Literal drops [[ THEN
     rdrop ]] false  EXIT  JOIN [[ ; immediate      rdrop ]] false  ;S  JOIN [[ ; immediate
 : **} ( sys -- ) \ regexp-pattern  : **} ( sys -- ) \ regexp-pattern
     \G end of greedy zero-or-more pattern      \G end of greedy zero-or-more pattern
     0 postpone n*} ; immediate      0 postpone n*} ; immediate
Line 204  Variable varsmax Line 204  Variable varsmax
     ]] BEGIN  [[ BEGIN, ; immediate      ]] BEGIN  [[ BEGIN, ; immediate
 : {* ( addr -- addr addr ) \ regexp-pattern  : {* ( addr -- addr addr ) \ regexp-pattern
     \G non-greedy zero-or-more pattern      \G non-greedy zero-or-more pattern
     ]] {+ dup FORK BUT  IF  drop true  EXIT THEN [[ ; immediate      ]] {+ dup FORK BUT  IF  drop true  ;S THEN [[ ; immediate
 : *} ( addr addr' -- addr' ) \ regexp-pattern  : *} ( addr addr' -- addr' ) \ regexp-pattern
     \G end of non-greedy zero-or-more pattern      \G end of non-greedy zero-or-more pattern
     ]] dup end$ u>  UNTIL [[      ]] dup end$ u>  UNTIL [[
     DONE, ]] drop false  EXIT  JOIN [[ ; immediate      DONE, ]] drop false  ;S  JOIN [[ ; immediate
 : +} ( addr addr' -- addr' ) \ regexp-pattern  : +} ( addr addr' -- addr' ) \ regexp-pattern
     \G end of non-greedy one-or-more pattern      \G end of non-greedy one-or-more pattern
     ]] dup FORK BUT  IF  drop true  EXIT [[      ]] dup FORK BUT  IF  drop true  ;S [[
     DONE, ]] drop false  EXIT  THEN *} [[ ; immediate      DONE, ]] drop false  ;S  THEN *} [[ ; immediate
   
 : // ( -- ) \ regexp-pattern  : // ( -- ) \ regexp-pattern
     \G search for string      \G search for string
Line 231  Variable varsmax Line 231  Variable varsmax
 : || ( addr addr -- addr addr ) \ regexp-pattern  : || ( addr addr -- addr addr ) \ regexp-pattern
     \G separator between alternatives      \G separator between alternatives
     vars @ varsmax @ max varsmax !      vars @ varsmax @ max varsmax !
     ]] dup FORK  IF  2drop true  EXIT THEN  drop dup [[ >r >r >r vars !      ]] dup FORK  IF  2drop true  ;S THEN  drop dup [[ >r >r >r vars !
     ]] DONE drop dup [[ r> r> r> ]] BEGIN [[ vars @ ; immediate      ]] DONE drop dup [[ r> r> r> ]] BEGIN [[ vars @ ; immediate
 : }} ( addr addr -- addr addr ) \ regexp-pattern  : }} ( addr addr -- addr addr ) \ regexp-pattern
     \G end of alternatives      \G end of alternatives
     vars @ varsmax @ max vars !      vars @ varsmax @ max vars !
     ]] dup FORK  IF  2drop true  EXIT THEN  drop dup [[ >r >r >r drop      ]] dup FORK  IF  2drop true  ;S THEN  drop dup [[ >r >r >r drop
     ]] DONE drop LEAVE [[ r> r> r> JOINs ; immediate      ]] DONE drop LEAVE [[ r> r> r> JOINs ; immediate
   
 \ match variables  \ match variables

Removed from v.1.18  
changed lines
  Added in v.1.19


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