         over line>> number>string length
         CHAR: \s pad-head
         ": " append write
-    ] [ line-text>> dup string? [ drop "" ] unless print ] bi
+    ] [ line-text>> "" or print ] bi
     simple-lexer-dump ;
 
 : parsing-word-lexer-dump ( error parsing-word -- )

    drop ;

: push-parsing-word ( word -- )
    lexer-parsing-word new
    swap >>word
    lexer get [
        [ line>>      >>line      ]
        [ line-text>> >>line-text ]
        [ column>>    >>column    ] tri
    ] [ parsing-words>> push ] bi ;

: pop-parsing-word ( -- )

M: lexer-error error-line [ error>> error-line ] [ line>> ] bi or ;

: <lexer-error> ( msg -- error )
    [
        lexer get {
            [ line>> ]
            [ column>> ]
            [ line-text>> ]
            [ parsing-words>> clone ]
        } cleave
    ] dip lexer-error boa ;

: simple-lexer-dump ( error -- )
    [ line>> number>string ": " append ]
    [ line-text>> "" or ]
    [ column>> 0 or ] tri
    pick length + CHAR: \s <string>
    [ write ] [ print ] [ write "^" print ] tri* ;
