add many more lexer rules