Syntax highlighting for Objective-C identifiers (super, self, nil, Nil, _cmd, SEL, IMP, BOOL, YES, NO, id).

This commit is contained in:
Erik Verbruggen
2009-10-09 15:23:19 +02:00
parent 4b44fa5f4a
commit d61eb9c893
5 changed files with 113 additions and 15 deletions

View File

@@ -32,27 +32,88 @@
CPLUSPLUS_BEGIN_NAMESPACE
static inline int classify2(const char *s) {
if (s[0] == 'i') {
if (s[1] == 'n') {
return Token_in;
if (s[0] == 'N') {
if (s[1] == 'O') {
return Token_NO;
}
}
}
return Token_identifier;
else if (s[0] == 'i') {
if (s[1] == 'd') {
return Token_id;
}
else if (s[1] == 'n') {
return Token_in;
}
}
return Token_identifier;
}
static inline int classify3(const char *s) {
if (s[0] == 'o') {
if (s[1] == 'u') {
if (s[2] == 't') {
return Token_out;
}
if (s[0] == 'I') {
if (s[1] == 'M') {
if (s[2] == 'P') {
return Token_IMP;
}
}
}
}
return Token_identifier;
else if (s[0] == 'N') {
if (s[1] == 'i') {
if (s[2] == 'l') {
return Token_Nil;
}
}
}
else if (s[0] == 'S') {
if (s[1] == 'E') {
if (s[2] == 'L') {
return Token_SEL;
}
}
}
else if (s[0] == 'Y') {
if (s[1] == 'E') {
if (s[2] == 'S') {
return Token_YES;
}
}
}
else if (s[0] == 'n') {
if (s[1] == 'i') {
if (s[2] == 'l') {
return Token_nil;
}
}
}
else if (s[0] == 'o') {
if (s[1] == 'u') {
if (s[2] == 't') {
return Token_out;
}
}
}
return Token_identifier;
}
static inline int classify4(const char *s) {
if (s[0] == 'c') {
if (s[0] == '_') {
if (s[1] == 'c') {
if (s[2] == 'm') {
if (s[3] == 'd') {
return Token__cmd;
}
}
}
}
else if (s[0] == 'B') {
if (s[1] == 'O') {
if (s[2] == 'O') {
if (s[3] == 'L') {
return Token_BOOL;
}
}
}
}
else if (s[0] == 'c') {
if (s[1] == 'o') {
if (s[2] == 'p') {
if (s[3] == 'y') {
@@ -61,6 +122,15 @@ static inline int classify4(const char *s) {
}
}
}
else if (s[0] == 's') {
if (s[1] == 'e') {
if (s[2] == 'l') {
if (s[3] == 'f') {
return Token_self;
}
}
}
}
return Token_identifier;
}
@@ -87,6 +157,17 @@ static inline int classify5(const char *s) {
}
}
}
else if (s[0] == 's') {
if (s[1] == 'u') {
if (s[2] == 'p') {
if (s[3] == 'e') {
if (s[4] == 'r') {
return Token_super;
}
}
}
}
}
return Token_identifier;
}

View File

@@ -35,11 +35,22 @@ CPLUSPLUS_BEGIN_HEADER
CPLUSPLUS_BEGIN_NAMESPACE
enum {
Token_NO,
Token_id,
Token_in,
Token_YES,
Token_IMP,
Token_Nil,
Token_SEL,
Token_nil,
Token_out,
Token__cmd,
Token_BOOL,
Token_copy,
Token_self,
Token_byref,
Token_inout,
Token_super,
Token_assign,
Token_bycopy,
Token_getter,