@@ -834,73 +834,73 @@ enable_or_disable ("enable"|"disable")
834834/* C++ Keywords and Operators */
835835%}
836836
837- alignas { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNAS); } // C++11
838- alignof { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNOF); } // C++11
839- and { return conditional_keyword (PARSER.cpp98 , TOK_ANDAND); }
840- and_eq { return conditional_keyword (PARSER.cpp98 , TOK_ANDASSIGN); }
841- bool { return conditional_keyword (PARSER.cpp98 , TOK_BOOL); }
842- catch { return conditional_keyword (PARSER.cpp98 , TOK_CATCH); }
843- char16_t { // C++11, but Visual Studio uses typedefs
837+ " alignas" { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNAS); } // C++11
838+ " alignof" { return conditional_keyword (PARSER.cpp11 , TOK_ALIGNOF); } // C++11
839+ " and" { return conditional_keyword (PARSER.cpp98 , TOK_ANDAND); }
840+ " and_eq" { return conditional_keyword (PARSER.cpp98 , TOK_ANDASSIGN); }
841+ " bool" { return conditional_keyword (PARSER.cpp98 , TOK_BOOL); }
842+ " catch" { return conditional_keyword (PARSER.cpp98 , TOK_CATCH); }
843+ " char16_t" { // C++11, but Visual Studio uses typedefs
844844 return conditional_keyword (
845845 PARSER.cpp11 &&
846846 PARSER.mode != configt::ansi_ct::flavourt::VISUAL_STUDIO,
847847 TOK_CHAR16_T);
848848 }
849- char32_t { // C++11, but Visual Studio uses typedefs
849+ " char32_t" { // C++11, but Visual Studio uses typedefs
850850 return conditional_keyword (
851851 PARSER.cpp11 &&
852852 PARSER.mode != configt::ansi_ct::flavourt::VISUAL_STUDIO,
853853 TOK_CHAR32_T);
854854 }
855- class { return conditional_keyword (PARSER.cpp98 , TOK_CLASS); }
856- compl { return conditional_keyword (PARSER.cpp98 , ' ~' ); }
857- constexpr { return conditional_keyword (PARSER.cpp11 , TOK_CONSTEXPR); } // C++11
858- delete { return conditional_keyword (PARSER.cpp98 , TOK_DELETE); }
859- decltype { return conditional_keyword (PARSER.cpp11 , TOK_DECLTYPE); } // C++11
860- explicit { return conditional_keyword (PARSER.cpp98 , TOK_EXPLICIT); }
861- false { return conditional_keyword (PARSER.cpp98 , TOK_FALSE); }
862- friend { return conditional_keyword (PARSER.cpp98 , TOK_FRIEND); }
863- mutable { return conditional_keyword (PARSER.cpp98 , TOK_MUTABLE); }
864- namespace { return conditional_keyword (PARSER.cpp98 , TOK_NAMESPACE); }
865- new { return conditional_keyword (PARSER.cpp98 , TOK_NEW); }
866- nodiscard { return conditional_keyword (PARSER.cpp11 , TOK_NODISCARD); } // C++11
867- noexcept { return conditional_keyword (PARSER.cpp11 , TOK_NOEXCEPT); } // C++11
868- noreturn { return conditional_keyword (PARSER.cpp11 , TOK_NORETURN); } // C++11
869- not { return conditional_keyword (PARSER.cpp98 , ' !' ); }
870- not_eq { return conditional_keyword (PARSER.cpp98 , TOK_NE); }
871- nullptr { return conditional_keyword (PARSER.cpp11 , TOK_NULLPTR); } // C++11
872- operator { return conditional_keyword (PARSER.cpp98 , TOK_OPERATOR); }
873- or { return conditional_keyword (PARSER.cpp98 , TOK_OROR); }
874- or_eq { return conditional_keyword (PARSER.cpp98 , TOK_ORASSIGN); }
875- private { return conditional_keyword (PARSER.cpp98 , TOK_PRIVATE); }
876- protected { return conditional_keyword (PARSER.cpp98 , TOK_PROTECTED); }
877- public { return conditional_keyword (PARSER.cpp98 , TOK_PUBLIC); }
878- static_assert { // C++11, but Visual Studio supports it in all modes
855+ " class" { return conditional_keyword (PARSER.cpp98 , TOK_CLASS); }
856+ " compl" { return conditional_keyword (PARSER.cpp98 , ' ~' ); }
857+ " constexpr" { return conditional_keyword (PARSER.cpp11 , TOK_CONSTEXPR); } // C++11
858+ " delete" { return conditional_keyword (PARSER.cpp98 , TOK_DELETE); }
859+ " decltype" { return conditional_keyword (PARSER.cpp11 , TOK_DECLTYPE); } // C++11
860+ " explicit" { return conditional_keyword (PARSER.cpp98 , TOK_EXPLICIT); }
861+ " false" { return conditional_keyword (PARSER.cpp98 , TOK_FALSE); }
862+ " friend" { return conditional_keyword (PARSER.cpp98 , TOK_FRIEND); }
863+ " mutable" { return conditional_keyword (PARSER.cpp98 , TOK_MUTABLE); }
864+ " namespace" { return conditional_keyword (PARSER.cpp98 , TOK_NAMESPACE); }
865+ " new" { return conditional_keyword (PARSER.cpp98 , TOK_NEW); }
866+ " nodiscard" { return conditional_keyword (PARSER.cpp11 , TOK_NODISCARD); } // C++11
867+ " noexcept" { return conditional_keyword (PARSER.cpp11 , TOK_NOEXCEPT); } // C++11
868+ " noreturn" { return conditional_keyword (PARSER.cpp11 , TOK_NORETURN); } // C++11
869+ " not" { return conditional_keyword (PARSER.cpp98 , ' !' ); }
870+ " not_eq" { return conditional_keyword (PARSER.cpp98 , TOK_NE); }
871+ " nullptr" { return conditional_keyword (PARSER.cpp11 , TOK_NULLPTR); } // C++11
872+ " operator" { return conditional_keyword (PARSER.cpp98 , TOK_OPERATOR); }
873+ " or " { return conditional_keyword (PARSER.cpp98 , TOK_OROR); }
874+ " or_eq" { return conditional_keyword (PARSER.cpp98 , TOK_ORASSIGN); }
875+ " private" { return conditional_keyword (PARSER.cpp98 , TOK_PRIVATE); }
876+ " protected" { return conditional_keyword (PARSER.cpp98 , TOK_PROTECTED); }
877+ " public" { return conditional_keyword (PARSER.cpp98 , TOK_PUBLIC); }
878+ " static_assert" { // C++11, but Visual Studio supports it in all modes
879879 // as a keyword, even though the documentation claims
880880 // it's a macro.
881881 return conditional_keyword (
882882 PARSER.cpp11 ||
883883 PARSER.mode == configt::ansi_ct::flavourt::VISUAL_STUDIO,
884884 TOK_STATIC_ASSERT);
885885 }
886- template { return conditional_keyword (PARSER.cpp98 , TOK_TEMPLATE); }
887- this { return conditional_keyword (PARSER.cpp98 , TOK_THIS); }
888- thread_local { return conditional_keyword (PARSER.cpp11 , TOK_THREAD_LOCAL); } // C++11
889- throw { return conditional_keyword (PARSER.cpp98 , TOK_THROW); }
890- true { return conditional_keyword (PARSER.cpp98 , TOK_TRUE); }
891- typeid { return conditional_keyword (PARSER.cpp98 , TOK_TYPEID); }
892- typename { return conditional_keyword (PARSER.cpp98 , TOK_TYPENAME); }
893- using { return conditional_keyword (PARSER.cpp98 , TOK_USING); }
894- virtual { return conditional_keyword (PARSER.cpp98 , TOK_VIRTUAL); }
895- wchar_t { // CodeWarrior doesn't have wchar_t built in,
886+ " template" { return conditional_keyword (PARSER.cpp98 , TOK_TEMPLATE); }
887+ " this" { return conditional_keyword (PARSER.cpp98 , TOK_THIS); }
888+ " thread_local" { return conditional_keyword (PARSER.cpp11 , TOK_THREAD_LOCAL); } // C++11
889+ " throw" { return conditional_keyword (PARSER.cpp98 , TOK_THROW); }
890+ " true" { return conditional_keyword (PARSER.cpp98 , TOK_TRUE); }
891+ " typeid" { return conditional_keyword (PARSER.cpp98 , TOK_TYPEID); }
892+ " typename" { return conditional_keyword (PARSER.cpp98 , TOK_TYPENAME); }
893+ " using" { return conditional_keyword (PARSER.cpp98 , TOK_USING); }
894+ " virtual" { return conditional_keyword (PARSER.cpp98 , TOK_VIRTUAL); }
895+ " wchar_t" { // CodeWarrior doesn't have wchar_t built in,
896896 // and MSC has a command-line option to turn it off
897897 return conditional_keyword (
898898 PARSER.cpp98 &&
899899 PARSER.mode !=configt::ansi_ct::flavourt::CODEWARRIOR,
900900 TOK_WCHAR_T);
901901 }
902- xor { return conditional_keyword (PARSER.cpp98 , ' ^' ); }
903- xor_eq { return conditional_keyword (PARSER.cpp98 , TOK_XORASSIGN); }
902+ " xor" { return conditional_keyword (PARSER.cpp98 , ' ^' ); }
903+ " xor_eq" { return conditional_keyword (PARSER.cpp98 , TOK_XORASSIGN); }
904904" .*" { return cpp_operator (TOK_DOTPM); }
905905" ->*" { return cpp_operator (TOK_ARROWPM); }
906906" ::" { if (PARSER.cpp98 )
@@ -914,7 +914,7 @@ xor_eq { return conditional_keyword(PARSER.cpp98, TOK_XORASSIGN); }
914914 }
915915 }
916916
917- __decltype { return conditional_keyword (
917+ " __decltype" { return conditional_keyword (
918918 PARSER.cpp98 &&
919919 (PARSER.mode ==configt::ansi_ct::flavourt::GCC ||
920920 PARSER.mode ==configt::ansi_ct::flavourt::CLANG),
0 commit comments