@@ -856,73 +856,73 @@ enable_or_disable ("enable"|"disable")
856856/* C++ Keywords and Operators */
857857%}
858858
859- alignas { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNAS); } // C++11
860- alignof { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNOF); } // C++11
861- and { return conditional_keyword (PARSER.cpp98 , TOK_ANDAND); }
862- and_eq { return conditional_keyword (PARSER.cpp98 , TOK_ANDASSIGN); }
863- bool { return conditional_keyword (PARSER.cpp98 , TOK_BOOL); }
864- catch { return conditional_keyword (PARSER.cpp98 , TOK_CATCH); }
865- char16_t { // C++11, but Visual Studio uses typedefs
859+ " alignas" { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNAS); } // C++11
860+ " alignof" { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNOF); } // C++11
861+ " and" { return conditional_keyword (PARSER.cpp98 , TOK_ANDAND); }
862+ " and_eq" { return conditional_keyword (PARSER.cpp98 , TOK_ANDASSIGN); }
863+ " bool" { return conditional_keyword (PARSER.cpp98 , TOK_BOOL); }
864+ " catch" { return conditional_keyword (PARSER.cpp98 , TOK_CATCH); }
865+ " char16_t" { // C++11, but Visual Studio uses typedefs
866866 return conditional_keyword (
867867 PARSER.cpp11 &&
868868 PARSER.mode != configt::ansi_ct::flavourt::VISUAL_STUDIO,
869869 TOK_CHAR16_T);
870870 }
871- char32_t { // C++11, but Visual Studio uses typedefs
871+ " char32_t" { // C++11, but Visual Studio uses typedefs
872872 return conditional_keyword (
873873 PARSER.cpp11 &&
874874 PARSER.mode != configt::ansi_ct::flavourt::VISUAL_STUDIO,
875875 TOK_CHAR32_T);
876876 }
877- class { return conditional_keyword (PARSER.cpp98 , TOK_CLASS); }
878- compl { return conditional_keyword (PARSER.cpp98 , ' ~' ); }
879- constexpr { return conditional_keyword (PARSER.cpp11 , TOK_CONSTEXPR); } // C++11
880- delete { return conditional_keyword (PARSER.cpp98 , TOK_DELETE); }
881- decltype { return conditional_keyword (PARSER.cpp11 , TOK_DECLTYPE); } // C++11
882- explicit { return conditional_keyword (PARSER.cpp98 , TOK_EXPLICIT); }
883- false { return conditional_keyword (PARSER.cpp98 , TOK_FALSE); }
884- friend { return conditional_keyword (PARSER.cpp98 , TOK_FRIEND); }
885- mutable { return conditional_keyword (PARSER.cpp98 , TOK_MUTABLE); }
886- namespace { return conditional_keyword (PARSER.cpp98 , TOK_NAMESPACE); }
887- new { return conditional_keyword (PARSER.cpp98 , TOK_NEW); }
888- nodiscard { return conditional_keyword (PARSER.cpp11 , TOK_NODISCARD); } // C++11
889- noexcept { return conditional_keyword (PARSER.cpp11 , TOK_NOEXCEPT); } // C++11
890- noreturn { return conditional_keyword (PARSER.cpp11 , TOK_NORETURN); } // C++11
891- not { return conditional_keyword (PARSER.cpp98 , ' !' ); }
892- not_eq { return conditional_keyword (PARSER.cpp98 , TOK_NE); }
893- nullptr { return conditional_keyword (PARSER.cpp11 , TOK_NULLPTR); } // C++11
894- operator { return conditional_keyword (PARSER.cpp98 , TOK_OPERATOR); }
895- or { return conditional_keyword (PARSER.cpp98 , TOK_OROR); }
896- or_eq { return conditional_keyword (PARSER.cpp98 , TOK_ORASSIGN); }
897- private { return conditional_keyword (PARSER.cpp98 , TOK_PRIVATE); }
898- protected { return conditional_keyword (PARSER.cpp98 , TOK_PROTECTED); }
899- public { return conditional_keyword (PARSER.cpp98 , TOK_PUBLIC); }
900- static_assert { // C++11, but Visual Studio supports it in all modes
877+ " class" { return conditional_keyword (PARSER.cpp98 , TOK_CLASS); }
878+ " compl" { return conditional_keyword (PARSER.cpp98 , ' ~' ); }
879+ " constexpr" { return conditional_keyword (PARSER.cpp11 , TOK_CONSTEXPR); } // C++11
880+ " delete" { return conditional_keyword (PARSER.cpp98 , TOK_DELETE); }
881+ " decltype" { return conditional_keyword (PARSER.cpp11 , TOK_DECLTYPE); } // C++11
882+ " explicit" { return conditional_keyword (PARSER.cpp98 , TOK_EXPLICIT); }
883+ " false" { return conditional_keyword (PARSER.cpp98 , TOK_FALSE); }
884+ " friend" { return conditional_keyword (PARSER.cpp98 , TOK_FRIEND); }
885+ " mutable" { return conditional_keyword (PARSER.cpp98 , TOK_MUTABLE); }
886+ " namespace" { return conditional_keyword (PARSER.cpp98 , TOK_NAMESPACE); }
887+ " new" { return conditional_keyword (PARSER.cpp98 , TOK_NEW); }
888+ " nodiscard" { return conditional_keyword (PARSER.cpp11 , TOK_NODISCARD); } // C++11
889+ " noexcept" { return conditional_keyword (PARSER.cpp11 , TOK_NOEXCEPT); } // C++11
890+ " noreturn" { return conditional_keyword (PARSER.cpp11 , TOK_NORETURN); } // C++11
891+ " not" { return conditional_keyword (PARSER.cpp98 , ' !' ); }
892+ " not_eq" { return conditional_keyword (PARSER.cpp98 , TOK_NE); }
893+ " nullptr" { return conditional_keyword (PARSER.cpp11 , TOK_NULLPTR); } // C++11
894+ " operator" { return conditional_keyword (PARSER.cpp98 , TOK_OPERATOR); }
895+ " or " { return conditional_keyword (PARSER.cpp98 , TOK_OROR); }
896+ " or_eq" { return conditional_keyword (PARSER.cpp98 , TOK_ORASSIGN); }
897+ " private" { return conditional_keyword (PARSER.cpp98 , TOK_PRIVATE); }
898+ " protected" { return conditional_keyword (PARSER.cpp98 , TOK_PROTECTED); }
899+ " public" { return conditional_keyword (PARSER.cpp98 , TOK_PUBLIC); }
900+ " static_assert" { // C++11, but Visual Studio supports it in all modes
901901 // as a keyword, even though the documentation claims
902902 // it's a macro.
903903 return conditional_keyword (
904904 PARSER.cpp11 ||
905905 PARSER.mode == configt::ansi_ct::flavourt::VISUAL_STUDIO,
906906 TOK_STATIC_ASSERT);
907907 }
908- template { return conditional_keyword (PARSER.cpp98 , TOK_TEMPLATE); }
909- this { return conditional_keyword (PARSER.cpp98 , TOK_THIS); }
910- thread_local { return conditional_keyword (PARSER.cpp11 , TOK_THREAD_LOCAL); } // C++11
911- throw { return conditional_keyword (PARSER.cpp98 , TOK_THROW); }
912- true { return conditional_keyword (PARSER.cpp98 , TOK_TRUE); }
913- typeid { return conditional_keyword (PARSER.cpp98 , TOK_TYPEID); }
914- typename { return conditional_keyword (PARSER.cpp98 , TOK_TYPENAME); }
915- using { return conditional_keyword (PARSER.cpp98 , TOK_USING); }
916- virtual { return conditional_keyword (PARSER.cpp98 , TOK_VIRTUAL); }
917- wchar_t { // CodeWarrior doesn't have wchar_t built in,
908+ " template" { return conditional_keyword (PARSER.cpp98 , TOK_TEMPLATE); }
909+ " this" { return conditional_keyword (PARSER.cpp98 , TOK_THIS); }
910+ " thread_local" { return conditional_keyword (PARSER.cpp11 , TOK_THREAD_LOCAL); } // C++11
911+ " throw" { return conditional_keyword (PARSER.cpp98 , TOK_THROW); }
912+ " true" { return conditional_keyword (PARSER.cpp98 , TOK_TRUE); }
913+ " typeid" { return conditional_keyword (PARSER.cpp98 , TOK_TYPEID); }
914+ " typename" { return conditional_keyword (PARSER.cpp98 , TOK_TYPENAME); }
915+ " using" { return conditional_keyword (PARSER.cpp98 , TOK_USING); }
916+ " virtual" { return conditional_keyword (PARSER.cpp98 , TOK_VIRTUAL); }
917+ " wchar_t" { // CodeWarrior doesn't have wchar_t built in,
918918 // and MSC has a command-line option to turn it off
919919 return conditional_keyword (
920920 PARSER.cpp98 &&
921921 PARSER.mode !=configt::ansi_ct::flavourt::CODEWARRIOR,
922922 TOK_WCHAR_T);
923923 }
924- xor { return conditional_keyword (PARSER.cpp98 , ' ^' ); }
925- xor_eq { return conditional_keyword (PARSER.cpp98 , TOK_XORASSIGN); }
924+ " xor" { return conditional_keyword (PARSER.cpp98 , ' ^' ); }
925+ " xor_eq" { return conditional_keyword (PARSER.cpp98 , TOK_XORASSIGN); }
926926" .*" { return cpp_operator (TOK_DOTPM); }
927927" ->*" { return cpp_operator (TOK_ARROWPM); }
928928" ::" { if (PARSER.cpp98 )
@@ -936,7 +936,7 @@ xor_eq { return conditional_keyword(PARSER.cpp98, TOK_XORASSIGN); }
936936 }
937937 }
938938
939- __decltype { return conditional_keyword (
939+ " __decltype" { return conditional_keyword (
940940 PARSER.cpp98 &&
941941 (PARSER.mode ==configt::ansi_ct::flavourt::GCC ||
942942 PARSER.mode ==configt::ansi_ct::flavourt::CLANG),
0 commit comments