loaded once working multiple times
lexer.reset()
prefix all stageful variables with $
incapsulate variable declaration
cache most of the initialization
preserve the top-level scope
fix comments
strange singleton implementation
normal parser instances with shared js context