[gforth] / gforth / regexp.fs  

gforth: gforth/regexp.fs

Diff for /gforth/regexp.fs between version 1.26 and 1.27

version 1.26, Mon Dec 27 22:39:38 2010 UTC version 1.27, Tue Dec 28 22:43:24 2010 UTC
Line 181 
Line 181 
   
 : {** ( addr -- addr addr ) \ regexp-pattern  : {** ( addr -- addr addr ) \ regexp-pattern
     \G greedy zero-or-more pattern      \G greedy zero-or-more pattern
     cell greed-counts +!      ]] false >r BEGIN  dup  FORK  BUT  WHILE  r> 1+ >r  REPEAT [[
     greed' ]] Literal off BEGIN dup [[ BEGIN, ; immediate      ]] r>  AHEAD  BUT  JOIN [[
       BEGIN, ; immediate
 ' {** Alias {++ ( addr -- addr addr ) \ regexp-pattern  ' {** Alias {++ ( addr -- addr addr ) \ regexp-pattern
     \G greedy one-or-more pattern      \G greedy one-or-more pattern
     immediate      immediate
 : n*} ( sys n -- ) \ regexp-pattern  
     \G At least @var{n} pattern  
     >r greed' ]] 1 Literal +! end-rex? 0= UNTIL dup [[ DONE, ]] drop [[  
     r@ greed' ]] Literal @ 1+ Literal U+DO FORK BUT [[  
     ]] IF  I' I - [[ r@ 1- ]] Literal + drops true UNLOOP ;S  THEN  LOOP [[  
     r@ IF  r@ ]] Literal drops [[ THEN  
     rdrop ]]  dup LEAVE  JOIN [[  
     cell negate greed-counts +! ; 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      ]] dup end$ u<=  ;S [[ DONE, ]] false ;S  THEN [[
       ]] nip 1+ false  U+DO  FORK BUT [[
       ]] IF  I' I - 1- drops true UNLOOP ;S  THEN  LOOP [[
       ]] dup LEAVE JOIN [[ ; immediate
 : ++} ( sys -- ) \ regexp-pattern  : ++} ( sys -- ) \ regexp-pattern
     \G end of greedy zero-or-more pattern      \G end of greedy zero-or-more pattern
     1 postpone n*} ; immediate      ]] dup end$ u<=  ;S [[ DONE, ]] false ;S  THEN [[
       ]] nip false  U+DO  FORK BUT [[
       ]] IF  I' I - drops true UNLOOP ;S  THEN  LOOP [[
       ]] drop dup LEAVE JOIN [[ ; immediate
   
 \ non-greedy loops  \ non-greedy loops
   


Generate output suitable for use with a patch program
Legend:
Removed from v.1.26  
changed lines
  Added in v.1.27

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help