浏览代码

CppLexer: Support \U escapes in addition to \u escapes

Nico Weber 5 年之前
父节点
当前提交
c1b7fd644c
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      Libraries/LibGUI/CppLexer.cpp

+ 5 - 3
Libraries/LibGUI/CppLexer.cpp

@@ -294,15 +294,17 @@ Vector<CppToken> CppLexer::lex()
             }
             }
             return 2 + hex_digits;
             return 2 + hex_digits;
         }
         }
-        case 'u': {
+        case 'u':
+        case 'U': {
             bool is_unicode = true;
             bool is_unicode = true;
-            for (size_t i = 0; i < 4; ++i) {
+            size_t number_of_digits = peek(1) == 'u' ? 4 : 8;
+            for (size_t i = 0; i < number_of_digits; ++i) {
                 if (!isxdigit(peek(2 + i))) {
                 if (!isxdigit(peek(2 + i))) {
                     is_unicode = false;
                     is_unicode = false;
                     break;
                     break;
                 }
                 }
             }
             }
-            return is_unicode ? 6 : 0;
+            return is_unicode ? 2 + number_of_digits : 0;
         }
         }
         default:
         default:
             return 0;
             return 0;