File: CxxLexerAPI.cpp

package info (click to toggle)
codelite 17.0.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 136,244 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (73 lines) | stat: -rw-r--r-- 2,982 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "CxxLexerAPI.h"

#include "CxxScannerTokens.h"

#include <unordered_set>

namespace
{
std::unordered_set<int> set_number_tokens = {
    T_DEC_NUMBER,
    T_OCTAL_NUMBER,
    T_HEX_NUMBER,
    T_FLOAT_NUMBER,
};

std::unordered_set<int> set_pp_tokens = {
    T_PP_DEFINE,       T_PP_DEFINED,
    T_PP_IF,           T_PP_IFNDEF,
    T_PP_IFDEF,        T_PP_ELSE,
    T_PP_ELIF,         T_PP_LINE,
    T_PP_PRAGMA,       T_PP_UNDEF,
    T_PP_ERROR,        T_PP_ENDIF,
    T_PP_IDENTIFIER,   T_PP_DEC_NUMBER,
    T_PP_OCTAL_NUMBER, T_PP_HEX_NUMBER,
    T_PP_FLOAT_NUMBER, T_PP_STRING,
    T_PP_AND,          T_PP_OR,
    T_PP_STATE_EXIT,   T_PP_INCLUDE_FILENAME,
    T_PP_INCLUDE,      T_PP_GT,
    T_PP_GTEQ,         T_PP_LT,
    T_PP_LTEQ,
};

std::unordered_set<int> set_operators_tokens = {
    T_DOT_STAR,   T_DOUBLE_COLONS, T_ARROW,     T_ARROW_STAR, T_PLUS_PLUS, T_MINUS_MINUS, T_LS,          T_LE,
    T_GE,         T_EQUAL,         T_NOT_EQUAL, T_AND_AND,    T_OR_OR,     T_STAR_EQUAL,  T_SLASH_EQUAL, T_DIV_EQUAL,
    T_PLUS_EQUAL, T_MINUS_EQUAL,   T_LS_ASSIGN, T_RS_ASSIGN,  T_AND_EQUAL, T_POW_EQUAL,   T_OR_EQUAL,    T_3_DOTS,
};

std::unordered_set<int> set_builtin_types = {
    T_BOOL, T_CHAR,  T_CHAR16_T, T_CHAR32_T, T_DOUBLE, T_FLOAT,   T_INT,
    T_LONG, T_SHORT, T_SIGNED,   T_UNSIGNED, T_VOID,   T_WCHAR_T,
};
std::unordered_set<int> set_keywords_tokens = {
    T_ALIGNAS,     T_ALIGNOF,      T_AND,          T_AND_EQ,
    T_ASM,         T_AUTO,         T_BITAND,       T_BITOR,
    T_BREAK,       T_CASE,         T_CATCH,

    T_CLASS,       T_COMPL,        T_CONST,        T_CONSTEXPR,
    T_CONST_CAST,  T_CONTINUE,     T_DECLTYPE,     T_DEFAULT,
    T_DELETE,      T_DO,           T_DYNAMIC_CAST, T_ELSE,
    T_ENUM,        T_EXPLICIT,     T_EXPORT,       T_EXTERN,
    T_FALSE,       T_FINAL,        T_FOR,          T_FRIEND,
    T_GOTO,        T_IF,           T_INLINE,

    T_MUTABLE,     T_NAMESPACE,    T_NEW,          T_NOEXCEPT,
    T_NOT,         T_NOT_EQ,       T_NULLPTR,      T_OPERATOR,
    T_OR,          T_OR_EQ,        T_OVERRIDE,     T_PRIVATE,
    T_PROTECTED,   T_PUBLIC,       T_REGISTER,     T_REINTERPRET_CAST,
    T_RETURN,      T_SIZEOF,       T_STATIC,       T_STATIC_ASSERT,
    T_STATIC_CAST, T_STRUCT,       T_SWITCH,       T_TEMPLATE,
    T_THIS,        T_THREAD_LOCAL, T_THROW,        T_TRUE,
    T_TRY,         T_TYPEDEF,      T_TYPEID,       T_TYPENAME,
    T_UNION,       T_USING,        T_VIRTUAL,      T_VOLATILE,
    T_WHILE,       T_XOR,          T_XOR_EQ,
};

} // namespace

bool CxxLexerToken::is_builtin_type() const { return set_builtin_types.count(GetType()); }
bool CxxLexerToken::is_keyword() const { return set_keywords_tokens.count(GetType()); }
bool CxxLexerToken::is_pp_keyword() const { return set_pp_tokens.count(GetType()); }
bool CxxLexerToken::is_operator() const { return set_operators_tokens.count(GetType()); }
bool CxxLexerToken::is_number() const { return set_number_tokens.count(GetType()); }