[gforth] / gforth / regexp.fs  

gforth: gforth/regexp.fs

Diff for /gforth/regexp.fs between version 1.28 and 1.29

version 1.28, Tue Dec 28 23:16:02 2010 UTC version 1.29, Tue Dec 28 23:24:21 2010 UTC
Line 169 
Line 169 
     \G start regexp block      \G start regexp block
     vars off varsmax off loops off greed-counts off      vars off varsmax off loops off greed-counts off
     ]] FORK  AHEAD BUT JOIN !end [[ BEGIN, ; immediate      ]] FORK  AHEAD BUT JOIN !end [[ BEGIN, ; immediate
 : )) ( -- addr f ) \ regexp-pattern  : )) ( -- flag ) \ regexp-pattern
     \G end regexp block      \G end regexp block
     ]] >last  ;S [[      ]] >last  ;S [[
     DONE, ]] drop false ;S THEN [[ ; immediate      DONE, ]] drop false ;S THEN [[ ; immediate
Line 194 
Line 194 
     ]] dup >last  ;S [[ DONE, ]] false ;S  THEN [[      ]] dup >last  ;S [[ DONE, ]] false ;S  THEN [[
     ]] nip 1+ false  U+DO  FORK BUT [[      ]] nip 1+ false  U+DO  FORK BUT [[
     ]] IF  I' I - 1- drops UNLOOP  true ;S  THEN  LOOP [[      ]] IF  I' I - 1- drops UNLOOP  true ;S  THEN  LOOP [[
     ]] dup LEAVE JOIN [[ ; immediate      ]] 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
     ]] dup >last  ;S [[ DONE, ]] false ;S  THEN [[      ]] dup >last  ;S [[ DONE, ]] false ;S  THEN [[
     ]] nip false  U+DO  FORK BUT [[      ]] nip false  U+DO  FORK BUT [[
     ]] IF  I' I - drops UNLOOP  true ;S  THEN  LOOP [[      ]] IF  I' I - drops UNLOOP  true ;S  THEN  LOOP [[
     ]] LEAVE JOIN [[ ; immediate      ]] drop false ;S JOIN [[ ; immediate
   
 \ non-greedy loops  \ non-greedy loops
   
Line 235 
Line 235 
   
 : {{ ( addr -- addr addr ) \ regexp-pattern  : {{ ( addr -- addr addr ) \ regexp-pattern
     \G Start of alternatives      \G Start of alternatives
     0 ]] dup dup FORK  IF  2drop true ;S  BUT  JOIN [[ vars @ ; immediate      0 ]] dup FORK  IF  drop true ;S  BUT  JOIN [[ vars @ ; immediate
 : || ( 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 !      vars @ varsmax @ max varsmax !  vars !
     ]] AHEAD  BUT  THEN  drop [[      ]] AHEAD  BUT  THEN  [[
     ]] dup dup FORK  IF  2drop true ;S  BUT  JOIN [[ vars @ ; immediate      ]] dup FORK  IF  drop true ;S  BUT  JOIN [[ vars @ ; immediate
 : }} ( addr addr -- addr ) \ regexp-pattern  : }} ( addr addr -- addr ) \ regexp-pattern
     \G end of alternatives      \G end of alternatives
     vars @ varsmax @ max vars !  drop      vars @ varsmax @ max vars !  drop
     ]] AHEAD  BUT  THEN  2drop false ;S [[  THENs ; immediate      ]] AHEAD  BUT  THEN  drop false ;S [[  THENs ; immediate
   
 \ match variables  \ match variables
   


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

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help