use backtrace to communicate lexer error locations too
backtrace ignores its own frame
add test for backtrace()
add some extra tests