lexer evaluation step has better state handling with newlines