         lexer get (>>column)
     ] bi ;
 
-: find-next-token ( ch -- i elt )
-    CHAR: \ 2array
-    [ lexer get [ column>> ] [ line-text>> ] bi ] dip
-    [ member? ] curry find-from ;
-
 : rest-of-line ( lexer -- seq )
     [ line-text>> ] [ column>> ] bi tail-slice ;
 


: advance-lexer ( n -- )
    [ lexer get ] dip [ + ] curry change-column drop ; inline

: take-double-quotes ( -- string )
    lexer get dup current-char CHAR: " = [

        lexer get advance-char
    ] if ;

DEFER: ((parse-multiline-string))

: parse-found-token ( i string token -- )
    [ lexer-before % ] dip
    CHAR: \ = [
        lexer get [ next-char , ] [ next-char , ] bi ((parse-multiline-string))
    ] [
        dup rest-begins? [
            end-string-parse
        ] [
            lexer get next-char , ((parse-multiline-string))
        ] if
    ] if ;

ERROR: trailing-characters string ;

: ((parse-multiline-string)) ( string -- )
    lexer get still-parsing? [
        dup first find-next-token [
            parse-found-token
        ] [
            drop lexer get next-line%
            ((parse-multiline-string))
        ] if*
    ] [
        unexpected-eof
    ] if ;

: (parse-multiline-string) ( string -- string' )
    [ ((parse-multiline-string)) ] "" make ;

PRIVATE>

: parse-multiline-string ( -- string )
    lexer get rest-of-line "\"\"" head? [
