lexer prototype, runnable