reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/Lex/LiteralSupport.cpp
  536   s = DigitsBegin = ThisTokBegin;
  554   if (*s == '0') { // parse radix
  560     s = SkipDigits(s);
  560     s = SkipDigits(s);
  561     if (s == ThisTokEnd) {
  570   SuffixBegin = s;
  571   checkSeparator(TokLoc, s, CSK_AfterDigits);
  575     for (const char *c = s; c != ThisTokEnd; ++c) {
  589   for (; s != ThisTokEnd; ++s) {
  589   for (; s != ThisTokEnd; ++s) {
  590     switch (*s) {
  623           s + 2 < ThisTokEnd && s[1] == '1' && s[2] == '6') {
  623           s + 2 < ThisTokEnd && s[1] == '1' && s[2] == '6') {
  623           s + 2 < ThisTokEnd && s[1] == '1' && s[2] == '6') {
  624         s += 2; // success, eat up 2 characters.
  650       if (s[1] == s[0]) {
  650       if (s[1] == s[0]) {
  651         assert(s + 1 < ThisTokEnd && "didn't maximally munch?");
  654         ++s;  // Eat both of them.
  667           switch (s[1]) {
  669             s += 2; // i8 suffix
  673             if (s[2] == '6') {
  674               s += 3; // i16 suffix
  679             if (s[2] == '2') {
  680               s += 3; // i32 suffix
  685             if (s[2] == '4') {
  686               s += 3; // i64 suffix
  695           assert(s <= ThisTokEnd && "didn't maximally munch?");
  711   if (s != ThisTokEnd || isImaginary) {
  735     if (s != ThisTokEnd) {
  757   if (isHexDigit(*s) && *s != 'e' && *s != 'E' &&
  757   if (isHexDigit(*s) && *s != 'e' && *s != 'E' &&
  757   if (isHexDigit(*s) && *s != 'e' && *s != 'E' &&
  758       !isValidUDSuffix(PP.getLangOpts(), StringRef(s, ThisTokEnd - s))) {
  758       !isValidUDSuffix(PP.getLangOpts(), StringRef(s, ThisTokEnd - s))) {
  759     PP.Diag(PP.AdvanceToTokenCharacter(TokLoc, s-ThisTokBegin),
  760             diag::err_invalid_digit) << StringRef(s, 1) << (radix == 8 ? 1 : 0);
  765   if (*s == '.') {
  766     checkSeparator(TokLoc, s, CSK_AfterDigits);
  767     s++;
  770     checkSeparator(TokLoc, s, CSK_BeforeDigits);
  771     s = SkipDigits(s); // Skip suffix.
  771     s = SkipDigits(s); // Skip suffix.
  773   if (*s == 'e' || *s == 'E') { // exponent
  773   if (*s == 'e' || *s == 'E') { // exponent
  774     checkSeparator(TokLoc, s, CSK_AfterDigits);
  775     const char *Exponent = s;
  776     s++;
  779     if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  779     if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  779     if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  779     if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  780     const char *first_non_digit = SkipDigits(s);
  781     if (containsDigits(s, first_non_digit)) {
  782       checkSeparator(TokLoc, s, CSK_BeforeDigits);
  783       s = first_non_digit;
  846   assert(s[0] == '0' && "Invalid method call");
  847   s++;
  849   int c1 = s[0];
  852   if ((c1 == 'x' || c1 == 'X') && (isHexDigit(s[1]) || s[1] == '.')) {
  852   if ((c1 == 'x' || c1 == 'X') && (isHexDigit(s[1]) || s[1] == '.')) {
  853     s++;
  854     assert(s < ThisTokEnd && "didn't maximally munch?");
  856     DigitsBegin = s;
  857     s = SkipHexDigits(s);
  857     s = SkipHexDigits(s);
  858     bool HasSignificandDigits = containsDigits(DigitsBegin, s);
  859     if (s == ThisTokEnd) {
  861     } else if (*s == '.') {
  862       s++;
  864       const char *floatDigitsBegin = s;
  865       s = SkipHexDigits(s);
  865       s = SkipHexDigits(s);
  866       if (containsDigits(floatDigitsBegin, s))
  873       PP.Diag(PP.AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin),
  882     if (*s == 'p' || *s == 'P') {
  882     if (*s == 'p' || *s == 'P') {
  883       checkSeparator(TokLoc, s, CSK_AfterDigits);
  884       const char *Exponent = s;
  885       s++;
  887       if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  887       if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  887       if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  887       if (s != ThisTokEnd && (*s == '+' || *s == '-'))  s++; // sign
  888       const char *first_non_digit = SkipDigits(s);
  889       if (!containsDigits(s, first_non_digit)) {
  897       checkSeparator(TokLoc, s, CSK_BeforeDigits);
  898       s = first_non_digit;
  907       PP.Diag(PP.AdvanceToTokenCharacter(TokLoc, s - ThisTokBegin),
  916   if ((c1 == 'b' || c1 == 'B') && (s[1] == '0' || s[1] == '1')) {
  916   if ((c1 == 'b' || c1 == 'B') && (s[1] == '0' || s[1] == '1')) {
  924     ++s;
  925     assert(s < ThisTokEnd && "didn't maximally munch?");
  927     DigitsBegin = s;
  928     s = SkipBinaryDigits(s);
  928     s = SkipBinaryDigits(s);
  929     if (s == ThisTokEnd) {
  931     } else if (isHexDigit(*s) &&
  933                                 StringRef(s, ThisTokEnd - s))) {
  933                                 StringRef(s, ThisTokEnd - s))) {
  934       PP.Diag(PP.AdvanceToTokenCharacter(TokLoc, s-ThisTokBegin),
  935               diag::err_invalid_digit) << StringRef(s, 1) << 2;
  946   DigitsBegin = s;
  947   s = SkipOctalDigits(s);
  947   s = SkipOctalDigits(s);
  948   if (s == ThisTokEnd)
  953   if (isDigit(*s)) {
  954     const char *EndDecimal = SkipDigits(s);
  956       s = EndDecimal;