lexer is now independent from parser state

- removed twice resetting
- no state is actually read from the program variable
- parser record is passed directly