Move the lexer to a separate header file