diff --git a/include/boost/wave/cpplexer/re2clex/cpp.re b/include/boost/wave/cpplexer/re2clex/cpp.re index d3cfecc0..36a86b9e 100644 --- a/include/boost/wave/cpplexer/re2clex/cpp.re +++ b/include/boost/wave/cpplexer/re2clex/cpp.re @@ -468,7 +468,7 @@ pp_number: if (s->detect_pp_numbers) { /*!re2c - "."? Digit (Digit | NonDigit | ExponentStart | ".")* + "."? Digit (("'"? (Digit | NonDigit | ExponentStart)) | ".")* { BOOST_WAVE_RET(T_PP_NUMBER); } // because we reached this point, then reset the cursor, diff --git a/include/boost/wave/cpplexer/re2clex/cpp_re.inc b/include/boost/wave/cpplexer/re2clex/cpp_re.inc index 995c170f..402b80b7 100644 --- a/include/boost/wave/cpplexer/re2clex/cpp_re.inc +++ b/include/boost/wave/cpplexer/re2clex/cpp_re.inc @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.2 on Sun Oct 26 21:28:12 2025 */ +/* Generated by re2c 1.0.2 on Thu Nov 13 14:28:20 2025 */ #line 1 "cpp.re" /*============================================================================= Boost.Wave: A Standard compliant C++ preprocessor library @@ -6454,62 +6454,95 @@ yy1005: if (yybm[0+yych] & 64) { goto yy1005; } - if (yych <= 'E') { - if (yych == '?') goto yy1008; - if (yych >= 'A') goto yy1010; + if (yych <= '@') { + if (yych <= '\'') { + if (yych >= '\'') goto yy1008; + } else { + if (yych == '?') goto yy1010; + } } else { if (yych <= '\\') { - if (yych >= '\\') goto yy1012; + if (yych <= 'E') goto yy1011; + if (yych >= '\\') goto yy1013; } else { if (yych <= '`') goto yy1007; - if (yych <= 'e') goto yy1010; + if (yych <= 'e') goto yy1011; } } yy1007: #line 472 "cpp.re" { BOOST_WAVE_RET(T_PP_NUMBER); } -#line 6472 "cpp_re.inc" +#line 6476 "cpp_re.inc" yy1008: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '?') goto yy1013; + if (yybm[0+yych] & 128) { + goto yy1011; + } + if (yych <= '@') { + if (yych <= '/') { + if (yych == '$') goto yy1005; + } else { + if (yych <= '9') goto yy1005; + if (yych == '?') goto yy1010; + } + } else { + if (yych <= '^') { + if (yych <= 'Z') goto yy1005; + if (yych == '\\') goto yy1013; + } else { + if (yych == '`') goto yy1009; + if (yych <= 'z') goto yy1005; + } + } yy1009: YYCURSOR = YYMARKER; goto yy1007; yy1010: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych == '?') goto yy1014; + goto yy1009; +yy1011: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy1010; + goto yy1011; } - if (yych <= '>') { - if (yych <= '+') { - if (yych == '$') goto yy1005; - if (yych <= '*') goto yy1007; - goto yy1005; - } else { - if (yych <= '.') { - if (yych <= ',') goto yy1007; + if (yych <= '9') { + if (yych <= '*') { + if (yych <= '$') { + if (yych <= '#') goto yy1007; goto yy1005; } else { - if (yych <= '/') goto yy1007; - if (yych <= '9') goto yy1005; + if (yych == '\'') goto yy1008; + goto yy1007; + } + } else { + if (yych <= ',') { + if (yych <= '+') goto yy1005; goto yy1007; + } else { + if (yych == '/') goto yy1007; + goto yy1005; } } } else { - if (yych <= '\\') { - if (yych <= '@') { - if (yych <= '?') goto yy1008; - goto yy1007; + if (yych <= '[') { + if (yych <= '?') { + if (yych <= '>') goto yy1007; + goto yy1010; } else { + if (yych <= '@') goto yy1007; if (yych <= 'Z') goto yy1005; - if (yych <= '[') goto yy1007; + goto yy1007; } } else { if (yych <= '_') { + if (yych <= '\\') goto yy1013; if (yych <= '^') goto yy1007; goto yy1005; } else { @@ -6519,33 +6552,19 @@ yy1010: } } } -yy1012: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych == 'U') goto yy1014; - if (yych == 'u') goto yy1015; - goto yy1009; yy1013: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych == '/') goto yy1012; + if (yych == 'U') goto yy1015; + if (yych == 'u') goto yy1016; goto yy1009; yy1014: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1009; - if (yych <= '9') goto yy1016; - goto yy1009; - } else { - if (yych <= 'F') goto yy1016; - if (yych <= '`') goto yy1009; - if (yych <= 'f') goto yy1016; - goto yy1009; - } + if (yych == '/') goto yy1013; + goto yy1009; yy1015: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); @@ -6622,15 +6641,29 @@ yy1020: yych = *YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy1009; - if (yych <= '9') goto yy1015; + if (yych <= '9') goto yy1022; goto yy1009; } else { - if (yych <= 'F') goto yy1015; + if (yych <= 'F') goto yy1022; if (yych <= '`') goto yy1009; - if (yych <= 'f') goto yy1015; + if (yych <= 'f') goto yy1022; goto yy1009; } yy1021: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy1009; + if (yych <= '9') goto yy1016; + goto yy1009; + } else { + if (yych <= 'F') goto yy1016; + if (yych <= '`') goto yy1009; + if (yych <= 'f') goto yy1016; + goto yy1009; + } +yy1022: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -6650,7 +6683,7 @@ yy1021: } else { -#line 6654 "cpp_re.inc" +#line 6687 "cpp_re.inc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -6691,309 +6724,309 @@ yy1021: if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1026; + if (yych == '.') goto yy1027; } else { - if (yych <= '0') goto yy1027; - if (yych <= '9') goto yy1029; + if (yych <= '0') goto yy1028; + if (yych <= '9') goto yy1030; } ++YYCURSOR; -yy1025: +yy1026: #line 487 "cpp.re" { BOOST_ASSERT(false); } -#line 6704 "cpp_re.inc" -yy1026: - yych = *++YYCURSOR; - if (yych <= '/') goto yy1025; - if (yych <= '9') goto yy1031; - goto yy1025; +#line 6737 "cpp_re.inc" yy1027: + yych = *++YYCURSOR; + if (yych <= '/') goto yy1026; + if (yych <= '9') goto yy1032; + goto yy1026; +yy1028: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { - if (yych == 'B') goto yy1041; - if (yych <= 'W') goto yy1038; - goto yy1043; + if (yych == 'B') goto yy1042; + if (yych <= 'W') goto yy1039; + goto yy1044; } else { if (yych <= 'b') { - if (yych <= 'a') goto yy1038; - goto yy1041; + if (yych <= 'a') goto yy1039; + goto yy1042; } else { - if (yych == 'x') goto yy1043; - goto yy1038; + if (yych == 'x') goto yy1044; + goto yy1039; } } -yy1028: +yy1029: #line 484 "cpp.re" { goto integer_suffix; } -#line 6729 "cpp_re.inc" -yy1029: +#line 6762 "cpp_re.inc" +yy1030: yyaccept = 0; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy1029; + goto yy1030; } if (yych <= '.') { - if (yych == '\'') goto yy1044; - if (yych <= '-') goto yy1028; - goto yy1036; + if (yych == '\'') goto yy1045; + if (yych <= '-') goto yy1029; + goto yy1037; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy1028; - goto yy1042; + if (yych <= 'D') goto yy1029; + goto yy1043; } else { - if (yych == 'e') goto yy1042; - goto yy1028; + if (yych == 'e') goto yy1043; + goto yy1029; } } -yy1031: +yy1032: yyaccept = 1; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; -yy1032: +yy1033: if (yych <= 'F') { if (yych <= '/') { - if (yych == '\'') goto yy1045; + if (yych == '\'') goto yy1046; } else { - if (yych <= '9') goto yy1031; - if (yych <= 'D') goto yy1033; - if (yych <= 'E') goto yy1042; - goto yy1046; + if (yych <= '9') goto yy1032; + if (yych <= 'D') goto yy1034; + if (yych <= 'E') goto yy1043; + goto yy1047; } } else { if (yych <= 'e') { - if (yych == 'L') goto yy1047; - if (yych >= 'e') goto yy1042; + if (yych == 'L') goto yy1048; + if (yych >= 'e') goto yy1043; } else { - if (yych <= 'f') goto yy1046; - if (yych == 'l') goto yy1047; + if (yych <= 'f') goto yy1047; + if (yych == 'l') goto yy1048; } } -yy1033: +yy1034: #line 482 "cpp.re" { BOOST_WAVE_RET(T_FLOATLIT); } -#line 6778 "cpp_re.inc" -yy1034: +#line 6811 "cpp_re.inc" +yy1035: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy1035; - if (yych <= '7') goto yy1048; - if (yych <= '9') goto yy1050; -yy1035: + if (yych <= '/') goto yy1036; + if (yych <= '7') goto yy1049; + if (yych <= '9') goto yy1051; +yy1036: YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy1028; + goto yy1029; } else { - goto yy1033; + goto yy1034; } -yy1036: +yy1037: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\'') goto yy1033; - goto yy1032; -yy1037: + if (yych == '\'') goto yy1034; + goto yy1033; +yy1038: yyaccept = 0; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; -yy1038: +yy1039: if (yybm[0+yych] & 32) { - goto yy1037; + goto yy1038; } if (yych <= '/') { if (yych <= '\'') { - if (yych <= '&') goto yy1028; - goto yy1034; + if (yych <= '&') goto yy1029; + goto yy1035; } else { - if (yych == '.') goto yy1036; - goto yy1028; + if (yych == '.') goto yy1037; + goto yy1029; } } else { if (yych <= 'E') { - if (yych <= '9') goto yy1039; - if (yych <= 'D') goto yy1028; - goto yy1042; + if (yych <= '9') goto yy1040; + if (yych <= 'D') goto yy1029; + goto yy1043; } else { - if (yych == 'e') goto yy1042; - goto yy1028; + if (yych == 'e') goto yy1043; + goto yy1029; } } -yy1039: +yy1040: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '/') { if (yych <= '\'') { - if (yych <= '&') goto yy1035; - goto yy1052; + if (yych <= '&') goto yy1036; + goto yy1053; } else { - if (yych == '.') goto yy1036; - goto yy1035; + if (yych == '.') goto yy1037; + goto yy1036; } } else { if (yych <= 'E') { - if (yych <= '9') goto yy1039; - if (yych <= 'D') goto yy1035; - goto yy1042; + if (yych <= '9') goto yy1040; + if (yych <= 'D') goto yy1036; + goto yy1043; } else { - if (yych == 'e') goto yy1042; - goto yy1035; + if (yych == 'e') goto yy1043; + goto yy1036; } } -yy1041: +yy1042: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 64) { - goto yy1053; + goto yy1054; } - goto yy1035; -yy1042: + goto yy1036; +yy1043: yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy1055; - goto yy1035; + if (yych == '+') goto yy1056; + goto yy1036; } else { - if (yych <= '-') goto yy1055; - if (yych <= '/') goto yy1035; - if (yych <= '9') goto yy1056; - goto yy1035; + if (yych <= '-') goto yy1056; + if (yych <= '/') goto yy1036; + if (yych <= '9') goto yy1057; + goto yy1036; } -yy1043: +yy1044: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy1058; + goto yy1059; } - goto yy1035; -yy1044: + goto yy1036; +yy1045: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy1035; - if (yych <= '9') goto yy1060; - goto yy1035; -yy1045: + if (yych <= '/') goto yy1036; + if (yych <= '9') goto yy1061; + goto yy1036; +yy1046: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy1035; - if (yych <= '9') goto yy1031; - goto yy1035; -yy1046: - yych = *++YYCURSOR; - if (yych == 'L') goto yy1062; - if (yych == 'l') goto yy1062; - goto yy1033; + if (yych <= '/') goto yy1036; + if (yych <= '9') goto yy1032; + goto yy1036; yy1047: yych = *++YYCURSOR; - if (yych == 'F') goto yy1062; - if (yych == 'f') goto yy1062; - goto yy1033; + if (yych == 'L') goto yy1063; + if (yych == 'l') goto yy1063; + goto yy1034; yy1048: + yych = *++YYCURSOR; + if (yych == 'F') goto yy1063; + if (yych == 'f') goto yy1063; + goto yy1034; +yy1049: yyaccept = 0; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '.') { - if (yych == '\'') goto yy1034; - if (yych <= '-') goto yy1028; - goto yy1036; + if (yych == '\'') goto yy1035; + if (yych <= '-') goto yy1029; + goto yy1037; } else { - if (yych <= '/') goto yy1028; - if (yych <= '7') goto yy1048; - if (yych >= ':') goto yy1028; + if (yych <= '/') goto yy1029; + if (yych <= '7') goto yy1049; + if (yych >= ':') goto yy1029; } -yy1050: +yy1051: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '-') { - if (yych != '\'') goto yy1035; + if (yych != '\'') goto yy1036; } else { - if (yych <= '.') goto yy1036; - if (yych <= '/') goto yy1035; - if (yych <= '9') goto yy1050; - goto yy1035; + if (yych <= '.') goto yy1037; + if (yych <= '/') goto yy1036; + if (yych <= '9') goto yy1051; + goto yy1036; } -yy1052: +yy1053: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy1035; - if (yych <= '9') goto yy1050; - goto yy1035; -yy1053: + if (yych <= '/') goto yy1036; + if (yych <= '9') goto yy1051; + goto yy1036; +yy1054: yyaccept = 0; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 64) { - goto yy1053; + goto yy1054; } - if (yych == '\'') goto yy1041; - goto yy1028; -yy1055: + if (yych == '\'') goto yy1042; + goto yy1029; +yy1056: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy1035; - if (yych >= ':') goto yy1035; -yy1056: + if (yych <= '/') goto yy1036; + if (yych >= ':') goto yy1036; +yy1057: yyaccept = 1; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= 'F') { if (yych <= '/') { - if (yych == '\'') goto yy1055; - goto yy1033; + if (yych == '\'') goto yy1056; + goto yy1034; } else { - if (yych <= '9') goto yy1056; - if (yych <= 'E') goto yy1033; - goto yy1046; + if (yych <= '9') goto yy1057; + if (yych <= 'E') goto yy1034; + goto yy1047; } } else { if (yych <= 'e') { - if (yych == 'L') goto yy1047; - goto yy1033; + if (yych == 'L') goto yy1048; + goto yy1034; } else { - if (yych <= 'f') goto yy1046; - if (yych == 'l') goto yy1047; - goto yy1033; + if (yych <= 'f') goto yy1047; + if (yych == 'l') goto yy1048; + goto yy1034; } } -yy1058: +yy1059: yyaccept = 0; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy1058; + goto yy1059; } - if (yych == '\'') goto yy1043; - goto yy1028; -yy1060: + if (yych == '\'') goto yy1044; + goto yy1029; +yy1061: yyaccept = 0; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '-') { - if (yych == '\'') goto yy1044; - goto yy1028; + if (yych == '\'') goto yy1045; + goto yy1029; } else { - if (yych <= '.') goto yy1036; - if (yych <= '/') goto yy1028; - if (yych <= '9') goto yy1060; - goto yy1028; + if (yych <= '.') goto yy1037; + if (yych <= '/') goto yy1029; + if (yych <= '9') goto yy1061; + goto yy1029; } -yy1062: +yy1063: ++YYCURSOR; - goto yy1033; + goto yy1034; } #line 488 "cpp.re" @@ -7006,61 +7039,61 @@ integer_suffix: auto suffix_start = YYCURSOR; -#line 7010 "cpp_re.inc" +#line 7043 "cpp_re.inc" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *(YYMARKER = YYCURSOR); if (yych <= 'h') { if (yych <= 'T') { - if (yych == 'L') goto yy1066; + if (yych == 'L') goto yy1067; } else { - if (yych <= 'U') goto yy1067; - if (yych == 'Z') goto yy1068; + if (yych <= 'U') goto yy1068; + if (yych == 'Z') goto yy1069; } } else { if (yych <= 't') { - if (yych <= 'i') goto yy1070; - if (yych == 'l') goto yy1072; + if (yych <= 'i') goto yy1071; + if (yych == 'l') goto yy1073; } else { - if (yych <= 'u') goto yy1073; - if (yych == 'z') goto yy1068; + if (yych <= 'u') goto yy1074; + if (yych == 'z') goto yy1069; } } -yy1065: +yy1066: #line 520 "cpp.re" { BOOST_WAVE_RET(T_INTLIT); } -#line 7034 "cpp_re.inc" -yy1066: +#line 7067 "cpp_re.inc" +yy1067: yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'L') goto yy1074; - goto yy1065; + if (yych == 'L') goto yy1075; + goto yy1066; } else { - if (yych <= 'U') goto yy1076; - if (yych == 'u') goto yy1076; - goto yy1065; + if (yych <= 'U') goto yy1077; + if (yych == 'u') goto yy1077; + goto yy1066; } -yy1067: +yy1068: yych = *++YYCURSOR; if (yych <= 'Z') { - if (yych == 'L') goto yy1077; - if (yych <= 'Y') goto yy1065; - goto yy1078; + if (yych == 'L') goto yy1078; + if (yych <= 'Y') goto yy1066; + goto yy1079; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy1065; - goto yy1079; + if (yych <= 'k') goto yy1066; + goto yy1080; } else { - if (yych == 'z') goto yy1078; - goto yy1065; + if (yych == 'z') goto yy1079; + goto yy1066; } } -yy1068: - yych = *++YYCURSOR; - if (yych == 'U') goto yy1078; - if (yych == 'u') goto yy1078; yy1069: + yych = *++YYCURSOR; + if (yych == 'U') goto yy1079; + if (yych == 'u') goto yy1079; +yy1070: #line 510 "cpp.re" { if (s->act_in_cpp2b_mode) { @@ -7070,74 +7103,74 @@ yy1069: BOOST_WAVE_RET(T_INTLIT); } } -#line 7074 "cpp_re.inc" -yy1070: - yych = *++YYCURSOR; - if (yych == '6') goto yy1080; +#line 7107 "cpp_re.inc" yy1071: - YYCURSOR = YYMARKER; - goto yy1065; + yych = *++YYCURSOR; + if (yych == '6') goto yy1081; yy1072: + YYCURSOR = YYMARKER; + goto yy1066; +yy1073: yych = *++YYCURSOR; if (yych <= 'k') { - if (yych == 'U') goto yy1076; - goto yy1065; + if (yych == 'U') goto yy1077; + goto yy1066; } else { - if (yych <= 'l') goto yy1074; - if (yych == 'u') goto yy1076; - goto yy1065; + if (yych <= 'l') goto yy1075; + if (yych == 'u') goto yy1077; + goto yy1066; } -yy1073: +yy1074: yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'h') { if (yych <= 'L') { - if (yych <= 'K') goto yy1065; - goto yy1077; + if (yych <= 'K') goto yy1066; + goto yy1078; } else { - if (yych == 'Z') goto yy1078; - goto yy1065; + if (yych == 'Z') goto yy1079; + goto yy1066; } } else { if (yych <= 'l') { - if (yych <= 'i') goto yy1070; - if (yych <= 'k') goto yy1065; - goto yy1079; + if (yych <= 'i') goto yy1071; + if (yych <= 'k') goto yy1066; + goto yy1080; } else { - if (yych == 'z') goto yy1078; - goto yy1065; + if (yych == 'z') goto yy1079; + goto yy1066; } } -yy1074: - yych = *++YYCURSOR; - if (yych == 'U') goto yy1081; - if (yych == 'u') goto yy1081; yy1075: + yych = *++YYCURSOR; + if (yych == 'U') goto yy1082; + if (yych == 'u') goto yy1082; +yy1076: #line 499 "cpp.re" { BOOST_WAVE_RET(T_LONGINTLIT); } -#line 7118 "cpp_re.inc" -yy1076: - ++YYCURSOR; - goto yy1065; +#line 7151 "cpp_re.inc" yy1077: - yych = *++YYCURSOR; - if (yych == 'L') goto yy1081; - goto yy1065; -yy1078: ++YYCURSOR; - goto yy1069; -yy1079: + goto yy1066; +yy1078: yych = *++YYCURSOR; - if (yych == 'l') goto yy1081; - goto yy1065; + if (yych == 'L') goto yy1082; + goto yy1066; +yy1079: + ++YYCURSOR; + goto yy1070; yy1080: yych = *++YYCURSOR; - if (yych == '4') goto yy1082; - goto yy1071; + if (yych == 'l') goto yy1082; + goto yy1066; yy1081: - ++YYCURSOR; - goto yy1075; + yych = *++YYCURSOR; + if (yych == '4') goto yy1083; + goto yy1072; yy1082: ++YYCURSOR; + goto yy1076; +yy1083: + ++YYCURSOR; #line 501 "cpp.re" { if (s->enable_ms_extensions) { @@ -7147,7 +7180,7 @@ yy1082: BOOST_WAVE_RET(T_INTLIT); } } -#line 7151 "cpp_re.inc" +#line 7184 "cpp_re.inc" } #line 522 "cpp.re" @@ -7161,7 +7194,7 @@ yy1082: extcharlit: { -#line 7165 "cpp_re.inc" +#line 7198 "cpp_re.inc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -7202,285 +7235,285 @@ extcharlit: yych = *YYCURSOR; if (yych <= 0x1F) { if (yych <= '\n') { - if (yych <= 0x08) goto yy1086; - if (yych <= '\t') goto yy1088; - goto yy1090; + if (yych <= 0x08) goto yy1087; + if (yych <= '\t') goto yy1089; + goto yy1091; } else { - if (yych <= '\f') goto yy1088; - if (yych <= '\r') goto yy1090; + if (yych <= '\f') goto yy1089; + if (yych <= '\r') goto yy1091; } } else { if (yych <= '>') { - if (yych == '\'') goto yy1090; - goto yy1088; + if (yych == '\'') goto yy1091; + goto yy1089; } else { - if (yych <= '?') goto yy1091; - if (yych == '\\') goto yy1092; - goto yy1088; + if (yych <= '?') goto yy1092; + if (yych == '\\') goto yy1093; + goto yy1089; } } -yy1086: +yy1087: ++YYCURSOR; #line 533 "cpp.re" { (*s->error_proc)(s, lexing_exception::generic_lexing_error, "Invalid character in raw string delimiter ('%c')", yych); } -#line 7230 "cpp_re.inc" -yy1088: - yych = *++YYCURSOR; - if (yych == '\'') goto yy1093; +#line 7263 "cpp_re.inc" yy1089: + yych = *++YYCURSOR; + if (yych == '\'') goto yy1094; +yy1090: #line 542 "cpp.re" { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); } -#line 7237 "cpp_re.inc" -yy1090: - ++YYCURSOR; - goto yy1089; +#line 7270 "cpp_re.inc" yy1091: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\'') goto yy1093; - if (yych == '?') goto yy1095; - goto yy1089; + ++YYCURSOR; + goto yy1090; yy1092: + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '\'') goto yy1094; + if (yych == '?') goto yy1096; + goto yy1090; +yy1093: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\\') { if (yych <= '>') { if (yych <= '&') { - if (yych == '"') goto yy1097; - goto yy1089; + if (yych == '"') goto yy1098; + goto yy1090; } else { - if (yych <= '\'') goto yy1097; - if (yych <= '/') goto yy1089; - if (yych <= '7') goto yy1098; - goto yy1089; + if (yych <= '\'') goto yy1098; + if (yych <= '/') goto yy1090; + if (yych <= '7') goto yy1099; + goto yy1090; } } else { if (yych <= 'E') { - if (yych <= '?') goto yy1099; - if (yych <= 'D') goto yy1089; - goto yy1097; + if (yych <= '?') goto yy1100; + if (yych <= 'D') goto yy1090; + goto yy1098; } else { - if (yych == 'U') goto yy1100; - if (yych <= '[') goto yy1089; - goto yy1097; + if (yych == 'U') goto yy1101; + if (yych <= '[') goto yy1090; + goto yy1098; } } } else { if (yych <= 'q') { if (yych <= 'd') { - if (yych <= '`') goto yy1089; - if (yych <= 'b') goto yy1097; - goto yy1089; + if (yych <= '`') goto yy1090; + if (yych <= 'b') goto yy1098; + goto yy1090; } else { - if (yych <= 'f') goto yy1097; - if (yych == 'n') goto yy1097; - goto yy1089; + if (yych <= 'f') goto yy1098; + if (yych == 'n') goto yy1098; + goto yy1090; } } else { if (yych <= 'u') { - if (yych == 's') goto yy1089; - if (yych <= 't') goto yy1097; - goto yy1101; + if (yych == 's') goto yy1090; + if (yych <= 't') goto yy1098; + goto yy1102; } else { - if (yych <= 'v') goto yy1097; - if (yych == 'x') goto yy1102; - goto yy1089; + if (yych <= 'v') goto yy1098; + if (yych == 'x') goto yy1103; + goto yy1090; } } } -yy1093: +yy1094: ++YYCURSOR; #line 539 "cpp.re" { BOOST_WAVE_RET(T_CHARLIT); } -#line 7297 "cpp_re.inc" -yy1095: - yych = *++YYCURSOR; - if (yych == '/') goto yy1103; +#line 7330 "cpp_re.inc" yy1096: - YYCURSOR = YYMARKER; - goto yy1089; -yy1097: yych = *++YYCURSOR; - if (yych == '\'') goto yy1093; - goto yy1096; + if (yych == '/') goto yy1104; +yy1097: + YYCURSOR = YYMARKER; + goto yy1090; yy1098: yych = *++YYCURSOR; - if (yych == '\'') goto yy1093; - if (yych <= '/') goto yy1096; - if (yych <= '7') goto yy1104; - goto yy1096; + if (yych == '\'') goto yy1094; + goto yy1097; yy1099: yych = *++YYCURSOR; - if (yych == '\'') goto yy1093; - if (yych == '?') goto yy1105; - goto yy1096; + if (yych == '\'') goto yy1094; + if (yych <= '/') goto yy1097; + if (yych <= '7') goto yy1105; + goto yy1097; yy1100: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1096; - if (yych <= '9') goto yy1106; - goto yy1096; - } else { - if (yych <= 'F') goto yy1106; - if (yych <= '`') goto yy1096; - if (yych <= 'f') goto yy1106; - goto yy1096; - } + if (yych == '\'') goto yy1094; + if (yych == '?') goto yy1106; + goto yy1097; yy1101: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1096; + if (yych <= '/') goto yy1097; if (yych <= '9') goto yy1107; - goto yy1096; + goto yy1097; } else { if (yych <= 'F') goto yy1107; - if (yych <= '`') goto yy1096; + if (yych <= '`') goto yy1097; if (yych <= 'f') goto yy1107; - goto yy1096; + goto yy1097; } yy1102: yych = *++YYCURSOR; - if (yych == '\'') goto yy1096; - goto yy1109; + if (yych <= '@') { + if (yych <= '/') goto yy1097; + if (yych <= '9') goto yy1108; + goto yy1097; + } else { + if (yych <= 'F') goto yy1108; + if (yych <= '`') goto yy1097; + if (yych <= 'f') goto yy1108; + goto yy1097; + } yy1103: + yych = *++YYCURSOR; + if (yych == '\'') goto yy1097; + goto yy1110; +yy1104: yych = *++YYCURSOR; if (yych <= '\\') { if (yych <= '>') { if (yych <= '&') { - if (yych == '"') goto yy1097; - goto yy1096; + if (yych == '"') goto yy1098; + goto yy1097; } else { - if (yych <= '\'') goto yy1097; - if (yych <= '/') goto yy1096; - if (yych <= '7') goto yy1098; - goto yy1096; + if (yych <= '\'') goto yy1098; + if (yych <= '/') goto yy1097; + if (yych <= '7') goto yy1099; + goto yy1097; } } else { if (yych <= 'E') { - if (yych <= '?') goto yy1099; - if (yych <= 'D') goto yy1096; - goto yy1097; + if (yych <= '?') goto yy1100; + if (yych <= 'D') goto yy1097; + goto yy1098; } else { - if (yych == 'U') goto yy1100; - if (yych <= '[') goto yy1096; - goto yy1097; + if (yych == 'U') goto yy1101; + if (yych <= '[') goto yy1097; + goto yy1098; } } } else { if (yych <= 'q') { if (yych <= 'd') { - if (yych <= '`') goto yy1096; - if (yych <= 'b') goto yy1097; - goto yy1096; + if (yych <= '`') goto yy1097; + if (yych <= 'b') goto yy1098; + goto yy1097; } else { - if (yych <= 'f') goto yy1097; - if (yych == 'n') goto yy1097; - goto yy1096; + if (yych <= 'f') goto yy1098; + if (yych == 'n') goto yy1098; + goto yy1097; } } else { if (yych <= 'u') { - if (yych == 's') goto yy1096; - if (yych <= 't') goto yy1097; - goto yy1101; + if (yych == 's') goto yy1097; + if (yych <= 't') goto yy1098; + goto yy1102; } else { - if (yych <= 'v') goto yy1097; - if (yych == 'x') goto yy1102; - goto yy1096; + if (yych <= 'v') goto yy1098; + if (yych == 'x') goto yy1103; + goto yy1097; } } } -yy1104: - yych = *++YYCURSOR; - if (yych == '\'') goto yy1093; - if (yych <= '/') goto yy1096; - if (yych <= '7') goto yy1097; - goto yy1096; yy1105: yych = *++YYCURSOR; - if (yych == '/') goto yy1097; - goto yy1096; + if (yych == '\'') goto yy1094; + if (yych <= '/') goto yy1097; + if (yych <= '7') goto yy1098; + goto yy1097; yy1106: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1096; - if (yych <= '9') goto yy1110; - goto yy1096; - } else { - if (yych <= 'F') goto yy1110; - if (yych <= '`') goto yy1096; - if (yych <= 'f') goto yy1110; - goto yy1096; - } + if (yych == '/') goto yy1098; + goto yy1097; yy1107: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1096; + if (yych <= '/') goto yy1097; if (yych <= '9') goto yy1111; - goto yy1096; + goto yy1097; } else { if (yych <= 'F') goto yy1111; - if (yych <= '`') goto yy1096; + if (yych <= '`') goto yy1097; if (yych <= 'f') goto yy1111; - goto yy1096; + goto yy1097; } yy1108: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy1109: - if (yybm[0+yych] & 128) { - goto yy1108; - } - if (yych == '\'') goto yy1093; - goto yy1096; -yy1110: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1096; + if (yych <= '/') goto yy1097; if (yych <= '9') goto yy1112; - goto yy1096; + goto yy1097; } else { if (yych <= 'F') goto yy1112; - if (yych <= '`') goto yy1096; + if (yych <= '`') goto yy1097; if (yych <= 'f') goto yy1112; - goto yy1096; + goto yy1097; + } +yy1109: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy1110: + if (yybm[0+yych] & 128) { + goto yy1109; } + if (yych == '\'') goto yy1094; + goto yy1097; yy1111: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1096; + if (yych <= '/') goto yy1097; if (yych <= '9') goto yy1113; - goto yy1096; + goto yy1097; } else { if (yych <= 'F') goto yy1113; - if (yych <= '`') goto yy1096; + if (yych <= '`') goto yy1097; if (yych <= 'f') goto yy1113; - goto yy1096; + goto yy1097; } yy1112: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1096; - if (yych <= '9') goto yy1101; - goto yy1096; + if (yych <= '/') goto yy1097; + if (yych <= '9') goto yy1114; + goto yy1097; } else { - if (yych <= 'F') goto yy1101; - if (yych <= '`') goto yy1096; - if (yych <= 'f') goto yy1101; - goto yy1096; + if (yych <= 'F') goto yy1114; + if (yych <= '`') goto yy1097; + if (yych <= 'f') goto yy1114; + goto yy1097; } yy1113: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1096; - if (yych <= '9') goto yy1097; - goto yy1096; + if (yych <= '/') goto yy1097; + if (yych <= '9') goto yy1102; + goto yy1097; + } else { + if (yych <= 'F') goto yy1102; + if (yych <= '`') goto yy1097; + if (yych <= 'f') goto yy1102; + goto yy1097; + } +yy1114: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy1097; + if (yych <= '9') goto yy1098; + goto yy1097; } else { - if (yych <= 'F') goto yy1097; - if (yych <= '`') goto yy1096; - if (yych <= 'f') goto yy1097; - goto yy1096; + if (yych <= 'F') goto yy1098; + if (yych <= '`') goto yy1097; + if (yych <= 'f') goto yy1098; + goto yy1097; } } #line 543 "cpp.re" @@ -7491,7 +7524,7 @@ yy1113: extstringlit: { -#line 7495 "cpp_re.inc" +#line 7528 "cpp_re.inc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -7533,346 +7566,346 @@ extstringlit: yych = *YYCURSOR; if (yych <= 0x1F) { if (yych <= '\n') { - if (yych <= 0x08) goto yy1116; - if (yych <= '\t') goto yy1118; - goto yy1120; + if (yych <= 0x08) goto yy1117; + if (yych <= '\t') goto yy1119; + goto yy1121; } else { - if (yych <= '\f') goto yy1118; - if (yych <= '\r') goto yy1120; + if (yych <= '\f') goto yy1119; + if (yych <= '\r') goto yy1121; } } else { if (yych <= '>') { - if (yych == '"') goto yy1121; - goto yy1118; + if (yych == '"') goto yy1122; + goto yy1119; } else { - if (yych <= '?') goto yy1123; - if (yych == '\\') goto yy1124; - goto yy1118; + if (yych <= '?') goto yy1124; + if (yych == '\\') goto yy1125; + goto yy1119; } } -yy1116: +yy1117: ++YYCURSOR; #line 550 "cpp.re" { (*s->error_proc)(s, lexing_exception::generic_lexing_error, "Invalid character in raw string delimiter ('%c')", yych); } -#line 7561 "cpp_re.inc" -yy1118: +#line 7594 "cpp_re.inc" +yy1119: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\n') { - if (yych == '\t') goto yy1126; + if (yych == '\t') goto yy1127; } else { - if (yych <= '\f') goto yy1126; - if (yych >= ' ') goto yy1126; + if (yych <= '\f') goto yy1127; + if (yych >= ' ') goto yy1127; } -yy1119: +yy1120: #line 559 "cpp.re" { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); } -#line 7574 "cpp_re.inc" -yy1120: - ++YYCURSOR; - goto yy1119; +#line 7607 "cpp_re.inc" yy1121: ++YYCURSOR; + goto yy1120; yy1122: + ++YYCURSOR; +yy1123: #line 556 "cpp.re" { BOOST_WAVE_RET(T_STRINGLIT); } -#line 7583 "cpp_re.inc" -yy1123: +#line 7616 "cpp_re.inc" +yy1124: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 64) { - goto yy1130; + goto yy1131; } if (yych <= '\n') { - if (yych == '\t') goto yy1126; - goto yy1119; + if (yych == '\t') goto yy1127; + goto yy1120; } else { - if (yych <= '\f') goto yy1126; - if (yych <= 0x1F) goto yy1119; - goto yy1126; + if (yych <= '\f') goto yy1127; + if (yych <= 0x1F) goto yy1120; + goto yy1127; } -yy1124: +yy1125: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\\') { if (yych <= '>') { if (yych <= '&') { - if (yych != '"') goto yy1119; + if (yych != '"') goto yy1120; } else { - if (yych <= '\'') goto yy1125; - if (yych <= '/') goto yy1119; - if (yych >= '8') goto yy1119; + if (yych <= '\'') goto yy1126; + if (yych <= '/') goto yy1120; + if (yych >= '8') goto yy1120; } } else { if (yych <= 'E') { - if (yych <= '?') goto yy1125; - if (yych <= 'D') goto yy1119; + if (yych <= '?') goto yy1126; + if (yych <= 'D') goto yy1120; } else { - if (yych == 'U') goto yy1132; - if (yych <= '[') goto yy1119; + if (yych == 'U') goto yy1133; + if (yych <= '[') goto yy1120; } } } else { if (yych <= 'q') { if (yych <= 'd') { - if (yych <= '`') goto yy1119; - if (yych >= 'c') goto yy1119; + if (yych <= '`') goto yy1120; + if (yych >= 'c') goto yy1120; } else { - if (yych <= 'f') goto yy1125; - if (yych != 'n') goto yy1119; + if (yych <= 'f') goto yy1126; + if (yych != 'n') goto yy1120; } } else { if (yych <= 'u') { - if (yych == 's') goto yy1119; - if (yych >= 'u') goto yy1133; + if (yych == 's') goto yy1120; + if (yych >= 'u') goto yy1134; } else { - if (yych <= 'v') goto yy1125; - if (yych == 'x') goto yy1134; - goto yy1119; + if (yych <= 'v') goto yy1126; + if (yych == 'x') goto yy1135; + goto yy1120; } } } -yy1125: +yy1126: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy1126: +yy1127: if (yybm[0+yych] & 32) { - goto yy1125; + goto yy1126; } - if (yych <= 0x1F) goto yy1127; - if (yych <= '"') goto yy1121; - if (yych <= '?') goto yy1128; - goto yy1129; -yy1127: + if (yych <= 0x1F) goto yy1128; + if (yych <= '"') goto yy1122; + if (yych <= '?') goto yy1129; + goto yy1130; +yy1128: YYCURSOR = YYMARKER; if (yyaccept == 0) { - goto yy1119; + goto yy1120; } else { - goto yy1122; + goto yy1123; } -yy1128: +yy1129: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { - goto yy1125; + goto yy1126; } - if (yych <= 0x1F) goto yy1127; - if (yych <= '"') goto yy1121; - if (yych <= '?') goto yy1130; -yy1129: + if (yych <= 0x1F) goto yy1128; + if (yych <= '"') goto yy1122; + if (yych <= '?') goto yy1131; +yy1130: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '\\') { if (yych <= '>') { if (yych <= '&') { - if (yych == '"') goto yy1125; - goto yy1127; + if (yych == '"') goto yy1126; + goto yy1128; } else { - if (yych <= '\'') goto yy1125; - if (yych <= '/') goto yy1127; - if (yych <= '7') goto yy1125; - goto yy1127; + if (yych <= '\'') goto yy1126; + if (yych <= '/') goto yy1128; + if (yych <= '7') goto yy1126; + goto yy1128; } } else { if (yych <= 'E') { - if (yych <= '?') goto yy1125; - if (yych <= 'D') goto yy1127; - goto yy1125; + if (yych <= '?') goto yy1126; + if (yych <= 'D') goto yy1128; + goto yy1126; } else { - if (yych == 'U') goto yy1132; - if (yych <= '[') goto yy1127; - goto yy1125; + if (yych == 'U') goto yy1133; + if (yych <= '[') goto yy1128; + goto yy1126; } } } else { if (yych <= 'q') { if (yych <= 'd') { - if (yych <= '`') goto yy1127; - if (yych <= 'b') goto yy1125; - goto yy1127; + if (yych <= '`') goto yy1128; + if (yych <= 'b') goto yy1126; + goto yy1128; } else { - if (yych <= 'f') goto yy1125; - if (yych == 'n') goto yy1125; - goto yy1127; + if (yych <= 'f') goto yy1126; + if (yych == 'n') goto yy1126; + goto yy1128; } } else { if (yych <= 'u') { - if (yych == 's') goto yy1127; - if (yych <= 't') goto yy1125; - goto yy1133; + if (yych == 's') goto yy1128; + if (yych <= 't') goto yy1126; + goto yy1134; } else { - if (yych <= 'v') goto yy1125; - if (yych == 'x') goto yy1134; - goto yy1127; + if (yych <= 'v') goto yy1126; + if (yych == 'x') goto yy1135; + goto yy1128; } } } -yy1130: +yy1131: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 64) { - goto yy1130; + goto yy1131; } if (yych <= '!') { if (yych <= '\n') { - if (yych == '\t') goto yy1125; - goto yy1127; + if (yych == '\t') goto yy1126; + goto yy1128; } else { - if (yych <= '\f') goto yy1125; - if (yych <= 0x1F) goto yy1127; - goto yy1125; + if (yych <= '\f') goto yy1126; + if (yych <= 0x1F) goto yy1128; + goto yy1126; } } else { if (yych <= '/') { - if (yych <= '"') goto yy1121; - if (yych <= '.') goto yy1125; - goto yy1135; + if (yych <= '"') goto yy1122; + if (yych <= '.') goto yy1126; + goto yy1136; } else { - if (yych == '\\') goto yy1129; - goto yy1125; + if (yych == '\\') goto yy1130; + goto yy1126; } } -yy1132: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1127; - if (yych <= '9') goto yy1137; - goto yy1127; - } else { - if (yych <= 'F') goto yy1137; - if (yych <= '`') goto yy1127; - if (yych <= 'f') goto yy1137; - goto yy1127; - } yy1133: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1127; + if (yych <= '/') goto yy1128; if (yych <= '9') goto yy1138; - goto yy1127; + goto yy1128; } else { if (yych <= 'F') goto yy1138; - if (yych <= '`') goto yy1127; + if (yych <= '`') goto yy1128; if (yych <= 'f') goto yy1138; - goto yy1127; + goto yy1128; } yy1134: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1127; - if (yych <= '9') goto yy1125; - goto yy1127; + if (yych <= '/') goto yy1128; + if (yych <= '9') goto yy1139; + goto yy1128; } else { - if (yych <= 'F') goto yy1125; - if (yych <= '`') goto yy1127; - if (yych <= 'f') goto yy1125; - goto yy1127; + if (yych <= 'F') goto yy1139; + if (yych <= '`') goto yy1128; + if (yych <= 'f') goto yy1139; + goto yy1128; } yy1135: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy1125; + if (yych <= '@') { + if (yych <= '/') goto yy1128; + if (yych <= '9') goto yy1126; + goto yy1128; + } else { + if (yych <= 'F') goto yy1126; + if (yych <= '`') goto yy1128; + if (yych <= 'f') goto yy1126; + goto yy1128; } - if (yych <= 0x1F) goto yy1127; - if (yych <= '"') goto yy1139; - if (yych <= '?') goto yy1128; - goto yy1135; -yy1137: +yy1136: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1127; - if (yych <= '9') goto yy1140; - goto yy1127; - } else { - if (yych <= 'F') goto yy1140; - if (yych <= '`') goto yy1127; - if (yych <= 'f') goto yy1140; - goto yy1127; + if (yybm[0+yych] & 32) { + goto yy1126; } + if (yych <= 0x1F) goto yy1128; + if (yych <= '"') goto yy1140; + if (yych <= '?') goto yy1129; + goto yy1136; yy1138: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1127; + if (yych <= '/') goto yy1128; if (yych <= '9') goto yy1141; - goto yy1127; + goto yy1128; } else { if (yych <= 'F') goto yy1141; - if (yych <= '`') goto yy1127; + if (yych <= '`') goto yy1128; if (yych <= 'f') goto yy1141; - goto yy1127; + goto yy1128; } yy1139: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy1128; + if (yych <= '9') goto yy1142; + goto yy1128; + } else { + if (yych <= 'F') goto yy1142; + if (yych <= '`') goto yy1128; + if (yych <= 'f') goto yy1142; + goto yy1128; + } +yy1140: yyaccept = 1; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { - goto yy1125; + goto yy1126; } - if (yych <= 0x1F) goto yy1122; - if (yych <= '"') goto yy1121; - if (yych <= '?') goto yy1128; - goto yy1129; -yy1140: + if (yych <= 0x1F) goto yy1123; + if (yych <= '"') goto yy1122; + if (yych <= '?') goto yy1129; + goto yy1130; +yy1141: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1127; - if (yych <= '9') goto yy1142; - goto yy1127; + if (yych <= '/') goto yy1128; + if (yych <= '9') goto yy1143; + goto yy1128; } else { - if (yych <= 'F') goto yy1142; - if (yych <= '`') goto yy1127; - if (yych <= 'f') goto yy1142; - goto yy1127; + if (yych <= 'F') goto yy1143; + if (yych <= '`') goto yy1128; + if (yych <= 'f') goto yy1143; + goto yy1128; } -yy1141: +yy1142: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1127; - if (yych <= '9') goto yy1134; - goto yy1127; + if (yych <= '/') goto yy1128; + if (yych <= '9') goto yy1135; + goto yy1128; } else { - if (yych <= 'F') goto yy1134; - if (yych <= '`') goto yy1127; - if (yych <= 'f') goto yy1134; - goto yy1127; + if (yych <= 'F') goto yy1135; + if (yych <= '`') goto yy1128; + if (yych <= 'f') goto yy1135; + goto yy1128; } -yy1142: +yy1143: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1127; - if (yych <= '9') goto yy1133; - goto yy1127; + if (yych <= '/') goto yy1128; + if (yych <= '9') goto yy1134; + goto yy1128; } else { - if (yych <= 'F') goto yy1133; - if (yych <= '`') goto yy1127; - if (yych <= 'f') goto yy1133; - goto yy1127; + if (yych <= 'F') goto yy1134; + if (yych <= '`') goto yy1128; + if (yych <= 'f') goto yy1134; + goto yy1128; } } #line 560 "cpp.re" @@ -7885,28 +7918,28 @@ extrawstringlit: // at this point we may see a delimiter -#line 7889 "cpp_re.inc" +#line 7922 "cpp_re.inc" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '(') { - if (yych <= 0x1F) goto yy1145; - if (yych <= '\'') goto yy1147; - goto yy1149; + if (yych <= 0x1F) goto yy1146; + if (yych <= '\'') goto yy1148; + goto yy1150; } else { - if (yych <= ')') goto yy1145; - if (yych != '\\') goto yy1147; + if (yych <= ')') goto yy1146; + if (yych != '\\') goto yy1148; } -yy1145: +yy1146: ++YYCURSOR; #line 569 "cpp.re" { (*s->error_proc)(s, lexing_exception::generic_lexing_error, "Invalid character in raw string delimiter ('%c')", yych); } -#line 7909 "cpp_re.inc" -yy1147: +#line 7942 "cpp_re.inc" +yy1148: ++YYCURSOR; #line 576 "cpp.re" { @@ -7919,15 +7952,15 @@ yy1147: } goto extrawstringlit; } -#line 7923 "cpp_re.inc" -yy1149: +#line 7956 "cpp_re.inc" +yy1150: ++YYCURSOR; #line 588 "cpp.re" { rawstringdelim = ")" + rawstringdelim; goto extrawstringbody; } -#line 7931 "cpp_re.inc" +#line 7964 "cpp_re.inc" } #line 593 "cpp.re" @@ -7936,7 +7969,7 @@ yy1149: extrawstringbody: { -#line 7940 "cpp_re.inc" +#line 7973 "cpp_re.inc" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -7977,54 +8010,54 @@ extrawstringbody: yych = *YYCURSOR; if (yych <= 0x1F) { if (yych <= '\n') { - if (yych <= 0x08) goto yy1153; - if (yych <= '\t') goto yy1155; - goto yy1157; + if (yych <= 0x08) goto yy1154; + if (yych <= '\t') goto yy1156; + goto yy1158; } else { - if (yych <= '\f') goto yy1155; - if (yych <= '\r') goto yy1159; + if (yych <= '\f') goto yy1156; + if (yych <= '\r') goto yy1160; } } else { if (yych <= '>') { - if (yych == '"') goto yy1160; - goto yy1155; + if (yych == '"') goto yy1161; + goto yy1156; } else { - if (yych <= '?') goto yy1162; - if (yych == '\\') goto yy1163; - goto yy1155; + if (yych <= '?') goto yy1163; + if (yych == '\\') goto yy1164; + goto yy1156; } } -yy1153: +yy1154: ++YYCURSOR; #line 600 "cpp.re" { (*s->error_proc)(s, lexing_exception::generic_lexing_error, "Invalid character in raw string body ('%c')", yych); } -#line 8005 "cpp_re.inc" -yy1155: - ++YYCURSOR; +#line 8038 "cpp_re.inc" yy1156: + ++YYCURSOR; +yy1157: #line 613 "cpp.re" { goto extrawstringbody; } -#line 8013 "cpp_re.inc" -yy1157: - ++YYCURSOR; +#line 8046 "cpp_re.inc" yy1158: + ++YYCURSOR; +yy1159: #line 606 "cpp.re" { s->line += count_backslash_newlines(s, cursor) +1; cursor.column = 1; goto extrawstringbody; } -#line 8023 "cpp_re.inc" -yy1159: - yych = *++YYCURSOR; - if (yych == '\n') goto yy1157; - goto yy1158; +#line 8056 "cpp_re.inc" yy1160: + yych = *++YYCURSOR; + if (yych == '\n') goto yy1158; + goto yy1159; +yy1161: ++YYCURSOR; #line 618 "cpp.re" { @@ -8037,238 +8070,238 @@ yy1160: goto extrawstringbody; } } -#line 8041 "cpp_re.inc" -yy1162: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '?') goto yy1164; - goto yy1156; +#line 8074 "cpp_re.inc" yy1163: + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '?') goto yy1165; + goto yy1157; +yy1164: yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\\') { if (yych <= '>') { if (yych <= '&') { - if (yych == '"') goto yy1155; - goto yy1156; + if (yych == '"') goto yy1156; + goto yy1157; } else { - if (yych <= '\'') goto yy1155; - if (yych <= '/') goto yy1156; - if (yych <= '7') goto yy1166; - goto yy1156; + if (yych <= '\'') goto yy1156; + if (yych <= '/') goto yy1157; + if (yych <= '7') goto yy1167; + goto yy1157; } } else { if (yych <= 'E') { - if (yych <= '?') goto yy1167; - if (yych <= 'D') goto yy1156; - goto yy1155; + if (yych <= '?') goto yy1168; + if (yych <= 'D') goto yy1157; + goto yy1156; } else { - if (yych == 'U') goto yy1168; - if (yych <= '[') goto yy1156; - goto yy1155; + if (yych == 'U') goto yy1169; + if (yych <= '[') goto yy1157; + goto yy1156; } } } else { if (yych <= 'q') { if (yych <= 'd') { - if (yych <= '`') goto yy1156; - if (yych <= 'b') goto yy1155; - goto yy1156; + if (yych <= '`') goto yy1157; + if (yych <= 'b') goto yy1156; + goto yy1157; } else { - if (yych <= 'f') goto yy1155; - if (yych == 'n') goto yy1155; - goto yy1156; + if (yych <= 'f') goto yy1156; + if (yych == 'n') goto yy1156; + goto yy1157; } } else { if (yych <= 'u') { - if (yych == 's') goto yy1156; - if (yych <= 't') goto yy1155; - goto yy1169; + if (yych == 's') goto yy1157; + if (yych <= 't') goto yy1156; + goto yy1170; } else { - if (yych <= 'v') goto yy1155; - if (yych == 'x') goto yy1170; - goto yy1156; + if (yych <= 'v') goto yy1156; + if (yych == 'x') goto yy1171; + goto yy1157; } } } -yy1164: - yych = *++YYCURSOR; - if (yych == '/') goto yy1171; yy1165: - YYCURSOR = YYMARKER; - goto yy1156; -yy1166: yych = *++YYCURSOR; - if (yych <= '/') goto yy1156; - if (yych <= '7') goto yy1172; - goto yy1156; + if (yych == '/') goto yy1172; +yy1166: + YYCURSOR = YYMARKER; + goto yy1157; yy1167: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '?') goto yy1173; - goto yy1156; -yy1168: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1165; - if (yych <= '9') goto yy1174; - goto yy1165; - } else { - if (yych <= 'F') goto yy1174; - if (yych <= '`') goto yy1165; - if (yych <= 'f') goto yy1174; - goto yy1165; - } + if (yych <= '/') goto yy1157; + if (yych <= '7') goto yy1173; + goto yy1157; +yy1168: + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '?') goto yy1174; + goto yy1157; yy1169: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1165; + if (yych <= '/') goto yy1166; if (yych <= '9') goto yy1175; - goto yy1165; + goto yy1166; } else { if (yych <= 'F') goto yy1175; - if (yych <= '`') goto yy1165; + if (yych <= '`') goto yy1166; if (yych <= 'f') goto yy1175; - goto yy1165; + goto yy1166; } yy1170: yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy1176; + if (yych <= '@') { + if (yych <= '/') goto yy1166; + if (yych <= '9') goto yy1176; + goto yy1166; + } else { + if (yych <= 'F') goto yy1176; + if (yych <= '`') goto yy1166; + if (yych <= 'f') goto yy1176; + goto yy1166; } - goto yy1165; yy1171: + yych = *++YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy1177; + } + goto yy1166; +yy1172: yych = *++YYCURSOR; if (yych <= '\\') { if (yych <= '>') { if (yych <= '&') { - if (yych == '"') goto yy1155; - goto yy1165; + if (yych == '"') goto yy1156; + goto yy1166; } else { - if (yych <= '\'') goto yy1155; - if (yych <= '/') goto yy1165; - if (yych <= '7') goto yy1166; - goto yy1165; + if (yych <= '\'') goto yy1156; + if (yych <= '/') goto yy1166; + if (yych <= '7') goto yy1167; + goto yy1166; } } else { if (yych <= 'E') { - if (yych <= '?') goto yy1167; - if (yych <= 'D') goto yy1165; - goto yy1155; + if (yych <= '?') goto yy1168; + if (yych <= 'D') goto yy1166; + goto yy1156; } else { - if (yych == 'U') goto yy1168; - if (yych <= '[') goto yy1165; - goto yy1155; + if (yych == 'U') goto yy1169; + if (yych <= '[') goto yy1166; + goto yy1156; } } } else { if (yych <= 'q') { if (yych <= 'd') { - if (yych <= '`') goto yy1165; - if (yych <= 'b') goto yy1155; - goto yy1165; + if (yych <= '`') goto yy1166; + if (yych <= 'b') goto yy1156; + goto yy1166; } else { - if (yych <= 'f') goto yy1155; - if (yych == 'n') goto yy1155; - goto yy1165; + if (yych <= 'f') goto yy1156; + if (yych == 'n') goto yy1156; + goto yy1166; } } else { if (yych <= 'u') { - if (yych == 's') goto yy1165; - if (yych <= 't') goto yy1155; - goto yy1169; + if (yych == 's') goto yy1166; + if (yych <= 't') goto yy1156; + goto yy1170; } else { - if (yych <= 'v') goto yy1155; - if (yych == 'x') goto yy1170; - goto yy1165; + if (yych <= 'v') goto yy1156; + if (yych == 'x') goto yy1171; + goto yy1166; } } } -yy1172: - yych = *++YYCURSOR; - if (yych <= '/') goto yy1156; - if (yych <= '7') goto yy1155; - goto yy1156; yy1173: yych = *++YYCURSOR; - if (yych == '/') goto yy1155; - goto yy1165; + if (yych <= '/') goto yy1157; + if (yych <= '7') goto yy1156; + goto yy1157; yy1174: yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy1165; - if (yych <= '9') goto yy1178; - goto yy1165; - } else { - if (yych <= 'F') goto yy1178; - if (yych <= '`') goto yy1165; - if (yych <= 'f') goto yy1178; - goto yy1165; - } + if (yych == '/') goto yy1156; + goto yy1166; yy1175: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1165; + if (yych <= '/') goto yy1166; if (yych <= '9') goto yy1179; - goto yy1165; + goto yy1166; } else { if (yych <= 'F') goto yy1179; - if (yych <= '`') goto yy1165; + if (yych <= '`') goto yy1166; if (yych <= 'f') goto yy1179; - goto yy1165; + goto yy1166; } yy1176: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy1176; - } - goto yy1156; -yy1178: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1165; + if (yych <= '/') goto yy1166; if (yych <= '9') goto yy1180; - goto yy1165; + goto yy1166; } else { if (yych <= 'F') goto yy1180; - if (yych <= '`') goto yy1165; + if (yych <= '`') goto yy1166; if (yych <= 'f') goto yy1180; - goto yy1165; + goto yy1166; } +yy1177: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy1177; + } + goto yy1157; yy1179: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1165; + if (yych <= '/') goto yy1166; if (yych <= '9') goto yy1181; - goto yy1165; + goto yy1166; } else { if (yych <= 'F') goto yy1181; - if (yych <= '`') goto yy1165; + if (yych <= '`') goto yy1166; if (yych <= 'f') goto yy1181; - goto yy1165; + goto yy1166; } yy1180: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1165; - if (yych <= '9') goto yy1169; - goto yy1165; + if (yych <= '/') goto yy1166; + if (yych <= '9') goto yy1182; + goto yy1166; } else { - if (yych <= 'F') goto yy1169; - if (yych <= '`') goto yy1165; - if (yych <= 'f') goto yy1169; - goto yy1165; + if (yych <= 'F') goto yy1182; + if (yych <= '`') goto yy1166; + if (yych <= 'f') goto yy1182; + goto yy1166; } yy1181: yych = *++YYCURSOR; if (yych <= '@') { - if (yych <= '/') goto yy1165; - if (yych <= '9') goto yy1155; - goto yy1165; - } else { - if (yych <= 'F') goto yy1155; - if (yych <= '`') goto yy1165; - if (yych <= 'f') goto yy1155; - goto yy1165; + if (yych <= '/') goto yy1166; + if (yych <= '9') goto yy1170; + goto yy1166; + } else { + if (yych <= 'F') goto yy1170; + if (yych <= '`') goto yy1166; + if (yych <= 'f') goto yy1170; + goto yy1166; + } +yy1182: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych <= '/') goto yy1166; + if (yych <= '9') goto yy1156; + goto yy1166; + } else { + if (yych <= 'F') goto yy1156; + if (yych <= '`') goto yy1166; + if (yych <= 'f') goto yy1156; + goto yy1166; } } #line 628 "cpp.re" diff --git a/include/boost/wave/cpplexer/re2clex/strict_cpp_re.inc b/include/boost/wave/cpplexer/re2clex/strict_cpp_re.inc index d7665768..e65124e2 100644 --- a/include/boost/wave/cpplexer/re2clex/strict_cpp_re.inc +++ b/include/boost/wave/cpplexer/re2clex/strict_cpp_re.inc @@ -1,4 +1,4 @@ -/* Generated by re2c 1.0.2 on Sun Oct 26 21:28:07 2025 */ +/* Generated by re2c 1.0.2 on Thu Nov 13 14:28:22 2025 */ #line 1 "strict_cpp.re" /*============================================================================= Boost.Wave: A Standard compliant C++ preprocessor library diff --git a/include/boost/wave/grammars/cpp_intlit_grammar.hpp b/include/boost/wave/grammars/cpp_intlit_grammar.hpp index c078c6de..05010ddd 100644 --- a/include/boost/wave/grammars/cpp_intlit_grammar.hpp +++ b/include/boost/wave/grammars/cpp_intlit_grammar.hpp @@ -13,6 +13,8 @@ #include +#include + #include #include #include @@ -171,13 +173,20 @@ intlit_grammar_gen::evaluate(TokenT const &token, intlit_grammar g(is_unsigned); uint_literal_type result = 0; typename TokenT::string_type const &token_val = token.get_value(); + + // filter out digit separators + auto not_digit_separator = [](char c){ return c != '\''; }; + auto digits_begin = boost::make_filter_iterator(not_digit_separator, token_val.begin(), token_val.end()); + auto digits_end = boost::make_filter_iterator(not_digit_separator, token_val.end(), token_val.end()); + typename TokenT::string_type token_digits(digits_begin, digits_end); + using boost::spirit::classic::parse_info; parse_info hit = - parse(token_val.begin(), token_val.end(), g[spirit_assign_actor(result)]); + parse(token_digits.begin(), token_digits.end(), g[spirit_assign_actor(result)]); if (!hit.hit) { BOOST_WAVE_THROW(preprocess_exception, ill_formed_integer_literal, - token_val.c_str(), token.get_position()); + token_digits.c_str(), token.get_position()); } return result; } diff --git a/test/testwave/testfiles/t_5_014.cpp b/test/testwave/testfiles/t_5_014.cpp index c7bae19f..8020de41 100644 --- a/test/testwave/testfiles/t_5_014.cpp +++ b/test/testwave/testfiles/t_5_014.cpp @@ -16,9 +16,10 @@ // Tests integer preprocessing number token and type of #if expression. //O --long_long +//O --c++17 // 12.1: -//R #line 26 "t_5_014.cpp" +//R #line 27 "t_5_014.cpp" //R true #if __TESTWAVE_LONG_MAX__ <= __TESTWAVE_LONG_MIN__ "Bad evaluation of long." @@ -26,7 +27,7 @@ true #endif -//R #line 34 "t_5_014.cpp" +//R #line 35 "t_5_014.cpp" //R true #if __TESTWAVE_LONG_MAX__ <= (__TESTWAVE_LONG_MAX__ / 2) /* 0x3FFFFFFF */ "Bad evaluation of long." @@ -35,7 +36,7 @@ true #endif // 12.2: -//R #line 43 "t_5_014.cpp" +//R #line 44 "t_5_014.cpp" //R true #if __TESTWAVE_ULONG_MAX__ / 2 < __TESTWAVE_LONG_MAX__ "Bad evaluation of unsigned long." @@ -44,7 +45,7 @@ true #endif // 12.3: Octal number. -//R #line 52 "t_5_014.cpp" +//R #line 53 "t_5_014.cpp" //R true #if 0177777 != 65535 "Bad evaluation of octal number." @@ -53,7 +54,7 @@ true #endif // 12.4: Hexadecimal number. -//R #line 61 "t_5_014.cpp" +//R #line 62 "t_5_014.cpp" //R true #if 0Xffff != 65535 || 0xFfFf != 65535 "Bad evaluation of hexadecimal number." @@ -62,7 +63,7 @@ true #endif // 12.5: Suffix 'L' or 'l'. -//R #line 70 "t_5_014.cpp" +//R #line 71 "t_5_014.cpp" //R true #if 0L != 0 || 0l != 0 "Bad evaluation of 'L' suffix." @@ -71,7 +72,7 @@ true #endif // 12.6: Suffix 'U' or 'u'. -//R #line 79 "t_5_014.cpp" +//R #line 80 "t_5_014.cpp" //R true #if 1U != 1 || 1u != 1 "Bad evaluation of 'U' suffix." @@ -80,7 +81,7 @@ true #endif // 12.7: Negative integer. -//R #line 88 "t_5_014.cpp" +//R #line 89 "t_5_014.cpp" //R true #if 0 <= -1 "Bad evaluation of negative number." @@ -89,7 +90,7 @@ true #endif // 12.8: Long Long integers -//R #line 97 "t_5_014.cpp" +//R #line 98 "t_5_014.cpp" //R true #if 0LL != 0 || 0ll != 0 "Bad evaluation of 'LL' suffix." @@ -98,7 +99,7 @@ true #endif // 12.8: Unsigned Long Long integers -//R #line 106 "t_5_014.cpp" +//R #line 107 "t_5_014.cpp" //R true #if 1ull != 1 || 1uLL != 1 || 1Ull != 1 || 1ULL != 1 || 1llu != 1 || 1llU != 1 || 1LLu != 1 || 1LLU != 1 "Bad evaluation of 'ULL' or 'LLU' suffix." @@ -107,7 +108,7 @@ true #endif // 12.9: invalid (mixed case) long long integers -//R #line 115 "t_5_014.cpp" +//R #line 116 "t_5_014.cpp" //R long long foo = 1234l L; //R long long bar = 5678L l; //R unsigned long long baz = 1234uL l; @@ -117,6 +118,81 @@ long long bar = 5678Ll; unsigned long long baz = 1234uLl; unsigned long long quux = 5678uLl; +// Evaluating numbers containing digit separators + +//R #line 128 "t_5_014.cpp" +//R true +#if 120'3 < 120'2 + "Bad comparison of signed integers with digit separators" +#else + true +#endif + +//R #line 136 "t_5_014.cpp" +//R true +#if 1'202 != 120'2l + "Bad equality comparison of signed integers with digit separators" +#else + true +#endif + +//R #line 144 "t_5_014.cpp" +//R true +#if 120'3ul < 120'2u + "Bad comparison of unsigned integers with digit separators" +#else + true +#endif + +//R #line 152 "t_5_014.cpp" +//R true +#if 1'202U != 120'2UL + "Bad equality comparison of unsigned integers with digit separators" +#else + true +#endif + +//R #line 160 "t_5_014.cpp" +//R true +#if 0x13'37c0de != 0x13'37c0'de + "Bad equality comparison of hex integers with digit separators" +#else + true +#endif + +//R #line 168 "t_5_014.cpp" +//R true +#if 0x13'37c0de < 0x13'27c0'de + "Bad comparison of hex integers with digit separators" +#else + true +#endif + +//R #line 176 "t_5_014.cpp" +//R true +#if 0b10'0101 != 0b1'00101 + "Bad equality comparison of binary integers with digit separators" +#else + true +#endif + +//R #line 184 "t_5_014.cpp" +//R true +#if 0b10'0101 > 0b11'0101 + "Bad comparison of binary integers with digit separators" +#else + true +#endif + +// Now one comparison the other way, just in case +//R #line 191 "t_5_014.cpp" +//R true +#if 0x13'37c0d'e == 0x1'3'3'7'c0de + true +#else + "Bad equality comparison for many hex digits with separator" +#endif + /*- * Copyright (c) 1998, 2002-2005 Kiyoshi Matsui diff --git a/test/testwave/testfiles/t_5_038.cpp b/test/testwave/testfiles/t_5_038.cpp index 1af756f3..60883aed 100644 --- a/test/testwave/testfiles/t_5_038.cpp +++ b/test/testwave/testfiles/t_5_038.cpp @@ -11,12 +11,12 @@ // Verify that long integer literals from a macro expansion parse correctly // This test covers #162 -//O --c++11 +//O --c++17 //O -DFOO=0x1234567ULL #define BAZ (FOO*2UL+1UL) #define BAR (BAZ + 1ULL) -#if defined(BAR) && (BAR == 0x2468AD0) +#if defined(BAR) && (BAR == 0x246'8AD0) struct Bar {}; #else #endif