lexer in C