| /*============================================================================= |
| Boost.Wave: A Standard compliant C++ preprocessor library |
| http://www.boost.org/ |
| |
| Copyright (c) 2001-2010 Hartmut Kaiser. Distributed under the Boost |
| Software License, Version 1.0. (See accompanying file |
| LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| =============================================================================*/ |
| |
| #include <boost/wave/wave_config.hpp> |
| #include <boost/wave/token_ids.hpp> |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| struct lexem |
| { |
| char const*token; |
| boost::wave::token_id id; |
| }; |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| lexem const lexems[] = |
| { |
| { "bitand", boost::wave::T_AND_ALT }, |
| { "and", boost::wave::T_ANDAND_ALT }, |
| { "and_eq", boost::wave::T_ANDASSIGN_ALT }, |
| { "bitor", boost::wave::T_OR_ALT }, |
| { "or_eq", boost::wave::T_ORASSIGN_ALT }, |
| { "or", boost::wave::T_OROR_ALT }, |
| { "xor", boost::wave::T_XOR_ALT }, |
| { "xor_eq", boost::wave::T_XORASSIGN_ALT }, |
| { "not", boost::wave::T_NOT_ALT }, |
| { "not_eq", boost::wave::T_NOTEQUAL_ALT }, |
| { "compl", boost::wave::T_COMPL_ALT }, |
| { "->*", boost::wave::T_ARROWSTAR }, |
| { ".*", boost::wave::T_DOTSTAR }, |
| { "::", boost::wave::T_COLON_COLON }, |
| |
| { "/* some C comment */", boost::wave::T_CCOMMENT }, |
| { "/* some multiline \n C comment \n */", boost::wave::T_CCOMMENT }, |
| { "// some c++ comment\n", boost::wave::T_CPPCOMMENT }, |
| { " ", boost::wave::T_SPACE }, |
| { "\t\v\f", boost::wave::T_SPACE }, |
| { "'c'", boost::wave::T_CHARLIT }, |
| { "'\\n'", boost::wave::T_CHARLIT }, |
| { "'\\u1234'", boost::wave::T_CHARLIT }, |
| { "'\\U12345678'", boost::wave::T_CHARLIT }, |
| { "\"string literal\"", boost::wave::T_STRINGLIT }, |
| { "\"string literal \\n \\u1234 \\U12345678\"", boost::wave::T_STRINGLIT }, |
| { "&&", boost::wave::T_ANDAND }, |
| { "&=", boost::wave::T_ANDASSIGN }, |
| { "==", boost::wave::T_EQUAL }, |
| { "=", boost::wave::T_ASSIGN }, |
| { "|=", boost::wave::T_ORASSIGN }, |
| { "\?\?!=", boost::wave::T_ORASSIGN_TRIGRAPH }, |
| { "||", boost::wave::T_OROR }, |
| { "|\?\?!", boost::wave::T_OROR_TRIGRAPH }, |
| { "\?\?!|", boost::wave::T_OROR_TRIGRAPH }, |
| { "\?\?!\?\?!", boost::wave::T_OROR_TRIGRAPH }, |
| { "|", boost::wave::T_OR }, |
| { "\?\?!", boost::wave::T_OR_TRIGRAPH }, |
| { "^=", boost::wave::T_XORASSIGN }, |
| { "\?\?'=", boost::wave::T_XORASSIGN_TRIGRAPH }, |
| { "^", boost::wave::T_XOR }, |
| { "\?\?'", boost::wave::T_XOR_TRIGRAPH }, |
| { ",", boost::wave::T_COMMA }, |
| { ":>", boost::wave::T_RIGHTBRACKET_ALT }, |
| { ":", boost::wave::T_COLON }, |
| { "/=", boost::wave::T_DIVIDEASSIGN }, |
| { "/", boost::wave::T_DIVIDE }, |
| { "...", boost::wave::T_ELLIPSIS }, |
| { ".", boost::wave::T_DOT }, |
| { ">>=", boost::wave::T_SHIFTRIGHTASSIGN }, |
| { ">>", boost::wave::T_SHIFTRIGHT }, |
| { ">=", boost::wave::T_GREATEREQUAL }, |
| { ">", boost::wave::T_GREATER }, |
| { "{", boost::wave::T_LEFTBRACE }, |
| { "<<=", boost::wave::T_SHIFTLEFTASSIGN }, |
| { "<<", boost::wave::T_SHIFTLEFT }, |
| { "<=", boost::wave::T_LESSEQUAL }, |
| { "<%", boost::wave::T_LEFTBRACE_ALT }, |
| { "<:", boost::wave::T_LEFTBRACKET_ALT }, |
| { "<", boost::wave::T_LESS }, |
| { "\?\?<", boost::wave::T_LEFTBRACE_TRIGRAPH }, |
| { "(", boost::wave::T_LEFTPAREN }, |
| { "[", boost::wave::T_LEFTBRACKET }, |
| { "\?\?(", boost::wave::T_LEFTBRACKET_TRIGRAPH }, |
| { "--", boost::wave::T_MINUSMINUS }, |
| { "-=", boost::wave::T_MINUSASSIGN }, |
| { "->", boost::wave::T_ARROW }, |
| { "-", boost::wave::T_MINUS }, |
| { "%:%:", boost::wave::T_POUND_POUND_ALT }, |
| { "%=", boost::wave::T_PERCENTASSIGN }, |
| { "%>", boost::wave::T_RIGHTBRACE_ALT }, |
| { "%:", boost::wave::T_POUND_ALT }, |
| { "%", boost::wave::T_PERCENT }, |
| { "!=", boost::wave::T_NOTEQUAL }, |
| { "!", boost::wave::T_NOT }, |
| { "+=", boost::wave::T_PLUSASSIGN }, |
| { "++", boost::wave::T_PLUSPLUS }, |
| { "+", boost::wave::T_PLUS }, |
| { "}", boost::wave::T_RIGHTBRACE }, |
| { "\?\?>", boost::wave::T_RIGHTBRACE_TRIGRAPH }, |
| { ")", boost::wave::T_RIGHTPAREN }, |
| { "]", boost::wave::T_RIGHTBRACKET }, |
| { "\?\?)", boost::wave::T_RIGHTBRACKET_TRIGRAPH }, |
| { ";", boost::wave::T_SEMICOLON }, |
| { "*=", boost::wave::T_STARASSIGN }, |
| { "*", boost::wave::T_STAR }, |
| { "~", boost::wave::T_COMPL }, |
| { "\?\?-", boost::wave::T_COMPL_TRIGRAPH }, |
| { "asm", boost::wave::T_ASM }, |
| { "auto", boost::wave::T_AUTO }, |
| { "bool", boost::wave::T_BOOL }, |
| { "false", boost::wave::T_FALSE }, |
| { "true", boost::wave::T_TRUE }, |
| { "break", boost::wave::T_BREAK }, |
| { "case", boost::wave::T_CASE }, |
| { "catch", boost::wave::T_CATCH }, |
| { "char", boost::wave::T_CHAR }, |
| { "class", boost::wave::T_CLASS }, |
| { "const_cast", boost::wave::T_CONSTCAST }, |
| { "const", boost::wave::T_CONST }, |
| { "continue", boost::wave::T_CONTINUE }, |
| { "default", boost::wave::T_DEFAULT }, |
| { "delete", boost::wave::T_DELETE }, |
| { "do", boost::wave::T_DO }, |
| { "double", boost::wave::T_DOUBLE }, |
| { "dynamic_cast", boost::wave::T_DYNAMICCAST }, |
| { "else", boost::wave::T_ELSE }, |
| { "enum", boost::wave::T_ENUM }, |
| { "explicit", boost::wave::T_EXPLICIT }, |
| { "export", boost::wave::T_EXPORT }, |
| { "extern", boost::wave::T_EXTERN }, |
| { "float", boost::wave::T_FLOAT }, |
| { "for", boost::wave::T_FOR }, |
| { "friend", boost::wave::T_FRIEND }, |
| { "goto", boost::wave::T_GOTO }, |
| { "if", boost::wave::T_IF }, |
| #if BOOST_WAVE_SUPPORT_IMPORT_KEYWORD != 0 |
| { "import", boost::wave::T_IMPORT}, |
| #endif |
| { "inline", boost::wave::T_INLINE }, |
| { "int", boost::wave::T_INT }, |
| { "long", boost::wave::T_LONG }, |
| { "mutable", boost::wave::T_MUTABLE }, |
| { "namespace", boost::wave::T_NAMESPACE }, |
| { "new", boost::wave::T_NEW }, |
| { "operator", boost::wave::T_OPERATOR }, |
| { "private", boost::wave::T_PRIVATE }, |
| { "protected", boost::wave::T_PROTECTED }, |
| { "public", boost::wave::T_PUBLIC }, |
| { "register", boost::wave::T_REGISTER }, |
| { "reinterpret_cast", boost::wave::T_REINTERPRETCAST }, |
| { "return", boost::wave::T_RETURN }, |
| { "short", boost::wave::T_SHORT }, |
| { "signed", boost::wave::T_SIGNED }, |
| { "sizeof", boost::wave::T_SIZEOF }, |
| { "static_cast", boost::wave::T_STATICCAST }, |
| { "static", boost::wave::T_STATIC }, |
| { "struct", boost::wave::T_STRUCT }, |
| { "switch", boost::wave::T_SWITCH }, |
| { "template", boost::wave::T_TEMPLATE }, |
| { "this", boost::wave::T_THIS }, |
| { "throw", boost::wave::T_THROW }, |
| { "try", boost::wave::T_TRY }, |
| { "typedef", boost::wave::T_TYPEDEF }, |
| { "typeid", boost::wave::T_TYPEID }, |
| { "typename", boost::wave::T_TYPENAME }, |
| { "union", boost::wave::T_UNION }, |
| { "unsigned", boost::wave::T_UNSIGNED }, |
| { "using", boost::wave::T_USING }, |
| { "virtual", boost::wave::T_VIRTUAL }, |
| { "void", boost::wave::T_VOID }, |
| { "volatile", boost::wave::T_VOLATILE }, |
| { "wchar_t", boost::wave::T_WCHART }, |
| { "while", boost::wave::T_WHILE }, |
| #if BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0 |
| { "__int8", boost::wave::T_MSEXT_INT8 }, |
| { "__int16", boost::wave::T_MSEXT_INT16 }, |
| { "__int32", boost::wave::T_MSEXT_INT32 }, |
| { "__int64", boost::wave::T_MSEXT_INT64 }, |
| { "__based", boost::wave::T_MSEXT_BASED }, |
| { "_based", boost::wave::T_MSEXT_BASED }, |
| { "__declspec", boost::wave::T_MSEXT_DECLSPEC }, |
| { "_declspec", boost::wave::T_MSEXT_DECLSPEC }, |
| { "__fastcall", boost::wave::T_MSEXT_FASTCALL }, |
| { "_fastcall", boost::wave::T_MSEXT_FASTCALL }, |
| { "__stdcall", boost::wave::T_MSEXT_STDCALL }, |
| { "_stdcall", boost::wave::T_MSEXT_STDCALL }, |
| { "__try", boost::wave::T_MSEXT_TRY }, |
| { "__except", boost::wave::T_MSEXT_EXCEPT }, |
| { "__finally", boost::wave::T_MSEXT_FINALLY }, |
| { "__leave", boost::wave::T_MSEXT_LEAVE }, |
| { "__inline", boost::wave::T_MSEXT_INLINE }, |
| { "_inline", boost::wave::T_MSEXT_INLINE }, |
| { "__asm", boost::wave::T_MSEXT_ASM }, |
| { "_asm", boost::wave::T_MSEXT_ASM }, |
| { "#region", boost::wave::T_MSEXT_PP_REGION }, |
| { "#endregion", boost::wave::T_MSEXT_PP_ENDREGION }, |
| #endif // BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0 |
| { "#define", boost::wave::T_PP_DEFINE }, |
| { "#ifdef", boost::wave::T_PP_IFDEF }, |
| { "#ifndef", boost::wave::T_PP_IFNDEF }, |
| { "#if", boost::wave::T_PP_IF }, |
| { "#else", boost::wave::T_PP_ELSE }, |
| { "#elif", boost::wave::T_PP_ELIF }, |
| { "#endif", boost::wave::T_PP_ENDIF }, |
| { "#error", boost::wave::T_PP_ERROR }, |
| { "#include \"some_header\"", boost::wave::T_PP_QHEADER }, |
| { "#include <some_header>", boost::wave::T_PP_HHEADER }, |
| // { "#include SOME_HEADER", boost::wave::T_PP_INCLUDE }, |
| { "#line", boost::wave::T_PP_LINE }, |
| { "#pragma", boost::wave::T_PP_PRAGMA }, |
| { "#undef", boost::wave::T_PP_UNDEF }, |
| { "#warning", boost::wave::T_PP_WARNING }, |
| { "some_identifier_1234", boost::wave::T_IDENTIFIER }, |
| { "some_identifier_\\u00d4", boost::wave::T_IDENTIFIER }, |
| { "some_identifier_\\U000000d4", boost::wave::T_IDENTIFIER }, |
| { ".1", boost::wave::T_FLOATLIT }, |
| { "1.1", boost::wave::T_FLOATLIT }, |
| { "1.", boost::wave::T_FLOATLIT }, |
| { ".1e+1", boost::wave::T_FLOATLIT }, |
| { ".1E-1", boost::wave::T_FLOATLIT }, |
| { ".1e1", boost::wave::T_FLOATLIT }, |
| { "1e1", boost::wave::T_FLOATLIT }, |
| { "1e1f", boost::wave::T_FLOATLIT }, |
| { "1e1L", boost::wave::T_FLOATLIT }, |
| { "1.1e1fl", boost::wave::T_FLOATLIT }, |
| { "1.e1LF", boost::wave::T_FLOATLIT }, |
| { "1234LL", boost::wave::T_LONGINTLIT }, |
| { "1234Ll", boost::wave::T_LONGINTLIT }, |
| { "1234ll", boost::wave::T_LONGINTLIT }, |
| { "1234llu", boost::wave::T_LONGINTLIT }, |
| { "1234ull", boost::wave::T_LONGINTLIT }, |
| #if BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0 |
| { "1234i64", boost::wave::T_LONGINTLIT }, |
| #endif |
| { "1234L", boost::wave::T_INTLIT }, |
| { "1234l", boost::wave::T_INTLIT }, |
| { "1234ul", boost::wave::T_INTLIT }, |
| { "1234LU", boost::wave::T_INTLIT }, |
| { "1234", boost::wave::T_INTLIT }, |
| { " ", boost::wave::T_SPACE }, |
| { "\t", boost::wave::T_SPACE }, |
| { "\n", boost::wave::T_NEWLINE }, |
| { "##", boost::wave::T_POUND_POUND }, |
| { "\?\?=\?\?=", boost::wave::T_POUND_POUND_TRIGRAPH }, |
| { "#", boost::wave::T_POUND }, |
| { "\?\?=", boost::wave::T_POUND_TRIGRAPH }, |
| { "\?\?/", boost::wave::T_ANY_TRIGRAPH }, |
| { "?", boost::wave::T_QUESTION_MARK }, |
| { NULL, boost::wave::token_id(0) } |
| }; |
| |