most of the C lexer