Lexer: identifiers, comments, constants