aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/Lexer.h
diff options
context:
space:
mode:
authorAdam Strzelecki <ono@java.pl>2014-11-02 14:42:23 +0100
committerNikolai Kosjar <nikolai.kosjar@theqtcompany.com>2015-02-17 09:45:34 +0000
commit425811291dfd41782cc91f6c1293d41af7b0e4d8 (patch)
treec730fb107d9b040248230d688790b45a08741be8 /src/libs/3rdparty/cplusplus/Lexer.h
parent5699991a2fd4ef35d24720249692612d069d391b (diff)
C++: Basic support for C++11 user-defined literals
1. Extends lexer so digit or string can be followed by underscore '_' and alphanumeric defining literal. 2. Extends parser so it accepts operator"" _abc(...) user-defined literal definition. 3. Adds Token::Flags.userDefinedLiteral bool flag field representing if token carries user-defined literal. 4. Adds C++11 auto tests case with: 12_km, 0.5_Pa, 'c'_X, "abd"_L, u"xyz"_M 5. All optional suffix scanning methods now return boolean if the suffix was found. 6. Adds C++ Lexer tests for user-defined literals with C++11 feature enabled. This change however does not make QtCreator understand user-defined literal semantics, e.g. properly resolve type when applying custom literal operator. Change-Id: I30e62f025ec9fb11c39261985ea4d772b1a80949 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
Diffstat (limited to 'src/libs/3rdparty/cplusplus/Lexer.h')
-rw-r--r--src/libs/3rdparty/cplusplus/Lexer.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libs/3rdparty/cplusplus/Lexer.h b/src/libs/3rdparty/cplusplus/Lexer.h
index 0309c69950..c19ee904f9 100644
--- a/src/libs/3rdparty/cplusplus/Lexer.h
+++ b/src/libs/3rdparty/cplusplus/Lexer.h
@@ -100,8 +100,9 @@ private:
void scanUntilQuote(Token *tok, unsigned char quote);
bool scanDigitSequence();
bool scanExponentPart();
- void scanOptionalFloatingSuffix();
- void scanOptionalIntegerSuffix(bool allowU = true);
+ bool scanOptionalFloatingSuffix();
+ bool scanOptionalIntegerSuffix(bool allowU = true);
+ void scanOptionalUserDefinedLiteral(Token *tok);
void scanNumericLiteral(Token *tok);
void scanPreprocessorNumber(Token *tok, bool dotAlreadySkipped);
void scanIdentifier(Token *tok, unsigned extraProcessedChars = 0);