version 1.17, 2010/09/05 19:09:55
|
version 1.18, 2010/09/05 22:18:54
|
Line 223 Variable varsmax
|
Line 223 Variable varsmax
|
\ idea: try to match one alternative and then the rest of regexp. |
\ idea: try to match one alternative and then the rest of regexp. |
\ if that fails, jump back to second alternative |
\ if that fails, jump back to second alternative |
|
|
: THENs ( sys -- ) BEGIN dup WHILE ]] THEN [[ REPEAT drop ; |
: JOINs ( sys -- ) BEGIN dup WHILE ]] JOIN [[ REPEAT drop ; |
|
|
: {{ ( addr -- addr addr ) \ regexp-pattern |
: {{ ( addr -- addr addr ) \ regexp-pattern |
\G Start of alternatives |
\G Start of alternatives |
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 ! |
]] nip AHEAD [[ >r >r >r vars ! |
]] dup FORK IF 2drop true EXIT 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 ! |
]] nip AHEAD [[ >r >r >r drop |
]] dup FORK IF 2drop true EXIT THEN drop dup [[ >r >r >r drop |
]] DONE drop LEAVE [[ r> r> r> THENs ; immediate |
]] DONE drop LEAVE [[ r> r> r> JOINs ; immediate |
|
|
\ match variables |
\ match variables |
|
|