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 |