rewrote Parser.complete() to be more robust and provide more useful information. Now not only is it possible to detect unterminated strings but a REPL could suggest/guess the tokens needed to make an expression well-formed.