summaryrefslogtreecommitdiff
path: root/src/shared/cplusplus/Token.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-02-14 14:41:51 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-02-15 09:27:00 +0100
commit2a59d2ae0c889fe6e4ac50a3f110b0103f880c15 (patch)
treeff989d0d79fcee735d24bf88ef7552aa43aa1c7f /src/shared/cplusplus/Token.cpp
parentabdd404ff5ec8539f0d3fd38139eb08ad8a03d66 (diff)
downloadqt-creator-2a59d2ae0c889fe6e4ac50a3f110b0103f880c15.tar.gz
Split Objective-C keyword parsing to handle the '@' separately.
Because apparently, while designing the Objective-C language, somebody thought it was a world-class idea to allow any white-space between the '@' character and the subsequent keyword. With this fix, we now correctly parse: @ dynamic and: @ selector and: @"foo" "bar" @"mooze" (This last one is 1 single string split over multiple lines.) Wonderful, isn't it? What we (and Clang) do not support, but what GCC supports is something like: @"foo"@@ "bar" @"mooze" @@ which is equivalent to @"foobarmooze".
Diffstat (limited to 'src/shared/cplusplus/Token.cpp')
-rw-r--r--src/shared/cplusplus/Token.cpp26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/shared/cplusplus/Token.cpp b/src/shared/cplusplus/Token.cpp
index e86038271f..e4f2baba4d 100644
--- a/src/shared/cplusplus/Token.cpp
+++ b/src/shared/cplusplus/Token.cpp
@@ -59,14 +59,14 @@ static const char *token_names[] = {
("<identifier>"), ("<numeric literal>"), ("<char literal>"),
("<wide char literal>"), ("<string literal>"), ("<wide char literal>"),
- ("<@string literal>"), ("<angle string literal>"),
+ ("<angle string literal>"),
- ("&"), ("&&"), ("&="), ("->"), ("->*"), ("^"), ("^="), (":"), ("::"),
- (","), ("/"), ("/="), ("."), ("..."), (".*"), ("="), ("=="), ("!"),
- ("!="), (">"), (">="), (">>"), (">>="), ("{"), ("["), ("<"), ("<="),
- ("<<"), ("<<="), ("("), ("-"), ("-="), ("--"), ("%"), ("%="), ("|"),
- ("|="), ("||"), ("+"), ("+="), ("++"), ("#"), ("##"), ("?"), ("}"),
- ("]"), (")"), (";"), ("*"), ("*="), ("~"), ("~="),
+ ("&"), ("&&"), ("&="), ("->"), ("->*"), ("@"), ("^"), ("^="), (":"),
+ ("::"), (","), ("/"), ("/="), ("."), ("..."), (".*"), ("="), ("=="),
+ ("!"), ("!="), (">"), (">="), (">>"), (">>="), ("{"), ("["), ("<"),
+ ("<="), ("<<"), ("<<="), ("("), ("-"), ("-="), ("--"), ("%"), ("%="),
+ ("|"), ("|="), ("||"), ("+"), ("+="), ("++"), ("#"), ("##"), ("?"),
+ ("}"), ("]"), (")"), (";"), ("*"), ("*="), ("~"), ("~="),
("asm"), ("auto"), ("bool"), ("break"), ("case"), ("catch"), ("char"),
("class"), ("const"), ("const_cast"), ("continue"), ("default"),
@@ -84,12 +84,11 @@ static const char *token_names[] = {
// gnu
("__attribute__"), ("__typeof__"),
- // objc @keywords
- ("@catch"), ("@class"), ("@compatibility_alias"), ("@defs"), ("@dynamic"),
- ("@encode"), ("@end"), ("@finally"), ("@implementation"), ("@interface"),
- ("@not_keyword"), ("@optional"), ("@package"), ("@private"), ("@property"),
- ("@protected"), ("@protocol"), ("@public"), ("@required"), ("@selector"),
- ("@synchronized"), ("@synthesize"), ("@throw"), ("@try"),
+ // objc keywords
+ ("@compatibility_alias"), ("@defs"), ("@dynamic"), ("@encode"), ("@end"),
+ ("@finally"), ("@implementation"), ("@interface"), ("@not_keyword"),
+ ("@optional"), ("@package"), ("@property"), ("@protocol"), ("@required"),
+ ("@selector"), ("@synchronized"), ("@synthesize"),
("SIGNAL"), ("SLOT"), ("Q_SIGNAL"), ("Q_SLOT"), ("signals"), ("slots"),
("Q_FOREACH"), ("Q_D"), ("Q_Q"),
@@ -124,7 +123,6 @@ const char *Token::spell() const
case T_NUMERIC_LITERAL:
case T_CHAR_LITERAL:
case T_STRING_LITERAL:
- case T_AT_STRING_LITERAL:
case T_ANGLE_STRING_LITERAL:
case T_WIDE_CHAR_LITERAL:
case T_WIDE_STRING_LITERAL: