<PRIVATE
-:: (take-until) ( col line end -- col' line )
- "\\" end suffix :> tokens
- col line [
- [ [ tokens member? ] find-from ] keep swap [
- CHAR: \ = [ [ 2 + ] dip t ] [ [ 1 + ] dip f ] if
- ] [
- "Unterminated regexp" throw
- ] if*
- ] loop ;
-
-:: take-until ( lexer -- string )
- lexer skip-blank
- lexer [
+: take-until ( lexer -- string )
+ dup skip-blank [
dupd [
- [ [ "[(\\/" member? ] find-from ] keep swap [
- {
- { CHAR: [ [ CHAR: ] (take-until) t ] }
- { CHAR: ( [ CHAR: ) (take-until) t ] }
- { CHAR: \ [ [ 2 + ] dip t ] }
- { CHAR: / [ f ] }
- } case
+ [ [ "\\/" member? ] find-from ] keep swap [
+ CHAR: \ = [ [ 2 + ] dip t ] [ f ] if
] [
"Unterminated regexp" throw
] if*