cpplexer.cpp

来自「奇趣公司比较新的qt/emd版本」· C++ 代码 · 共 1,288 行 · 第 1/3 页

CPP
1,288
字号
            m_buffer[m_ptr+2] == '_' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'q')        {            *kind = Token_or_eq;            return;        }        break;        case 's':        if (m_buffer[m_ptr+1] == 'h' &&            m_buffer[m_ptr+2] == 'o' &&            m_buffer[m_ptr+3] == 'r' &&            m_buffer[m_ptr+4] == 't')        {            *kind = Token_short;            return;        }        if (m_buffer[m_ptr+1] == 'l' &&            m_buffer[m_ptr+2] == 'o' &&            m_buffer[m_ptr+3] == 't' &&            m_buffer[m_ptr+4] == 's')        {            *kind = Token_slots;            return;        }        break;        case 'u':        if (m_buffer[m_ptr+1] == 'n' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 'o' &&            m_buffer[m_ptr+4] == 'n')        {            *kind = Token_union;            return;        }        if (m_buffer[m_ptr+1] == 's' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 'n' &&            m_buffer[m_ptr+4] == 'g')        {            *kind = Token_using;            return;        }        break;        case 't':        if (m_buffer[m_ptr+1] == 'h' &&            m_buffer[m_ptr+2] == 'r' &&            m_buffer[m_ptr+3] == 'o' &&            m_buffer[m_ptr+4] == 'w')        {            *kind = Token_throw;            return;        }        break;        case 'w':        if (m_buffer[m_ptr+1] == 'h' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 'l' &&            m_buffer[m_ptr+4] == 'e')        {            *kind = Token_while;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword6(int *kind){    switch (m_buffer[m_ptr]) {        case 'a':        if (m_buffer[m_ptr+1] == 'n' &&            m_buffer[m_ptr+2] == 'd' &&            m_buffer[m_ptr+3] == '_' &&            m_buffer[m_ptr+4] == 'e' &&            m_buffer[m_ptr+5] == 'q')        {            *kind = Token_and_eq;            return;        }        break;        case 'b':        if (m_buffer[m_ptr+1] == 'i' &&            m_buffer[m_ptr+2] == 't' &&            m_buffer[m_ptr+3] == 'a' &&            m_buffer[m_ptr+4] == 'n' &&            m_buffer[m_ptr+5] == 'd')        {            *kind = Token_bitand;            return;        }        break;        case 'e':        if (m_buffer[m_ptr+1] == 'x' &&            m_buffer[m_ptr+2] == 'p' &&            m_buffer[m_ptr+3] == 'o' &&            m_buffer[m_ptr+4] == 'r' &&            m_buffer[m_ptr+5] == 't')        {            *kind = Token_export;            return;        }        if (m_buffer[m_ptr+1] == 'x' &&            m_buffer[m_ptr+2] == 't' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'r' &&            m_buffer[m_ptr+5] == 'n')        {            *kind = Token_extern;            return;        }        break;        case 'd':        if (m_buffer[m_ptr+1] == 'e' &&            m_buffer[m_ptr+2] == 'l' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 't' &&            m_buffer[m_ptr+5] == 'e')        {            *kind = Token_delete;            return;        }        if (m_buffer[m_ptr+1] == 'o' &&            m_buffer[m_ptr+2] == 'u' &&            m_buffer[m_ptr+3] == 'b' &&            m_buffer[m_ptr+4] == 'l' &&            m_buffer[m_ptr+5] == 'e')        {            *kind = Token_double;            return;        }        break;        case 'f':        if (m_buffer[m_ptr+1] == 'r' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'n' &&            m_buffer[m_ptr+5] == 'd')        {            *kind = Token_friend;            return;        }        break;        case 'i':        if (m_buffer[m_ptr+1] == 'n' &&            m_buffer[m_ptr+2] == 'l' &&            m_buffer[m_ptr+3] == 'i' &&            m_buffer[m_ptr+4] == 'n' &&            m_buffer[m_ptr+5] == 'e')        {            *kind = Token_inline;            return;        }        break;        case 'K':        if (m_buffer[m_ptr+1] == '_' &&            m_buffer[m_ptr+2] == 'D' &&            m_buffer[m_ptr+3] == 'C' &&            m_buffer[m_ptr+4] == 'O' &&            m_buffer[m_ptr+5] == 'P')        {            *kind = Token_K_DCOP;            return;        }        break;        case 'n':        if (m_buffer[m_ptr+1] == 'o' &&            m_buffer[m_ptr+2] == 't' &&            m_buffer[m_ptr+3] == '_' &&            m_buffer[m_ptr+4] == 'e' &&            m_buffer[m_ptr+5] == 'q')        {            *kind = Token_not_eq;            return;        }        break;        case 'p':        if (m_buffer[m_ptr+1] == 'u' &&            m_buffer[m_ptr+2] == 'b' &&            m_buffer[m_ptr+3] == 'l' &&            m_buffer[m_ptr+4] == 'i' &&            m_buffer[m_ptr+5] == 'c')        {            *kind = Token_public;            return;        }        break;        case 's':        if (m_buffer[m_ptr+1] == 'i' &&            m_buffer[m_ptr+2] == 'g' &&            m_buffer[m_ptr+3] == 'n' &&            m_buffer[m_ptr+4] == 'e' &&            m_buffer[m_ptr+5] == 'd')        {            *kind = Token_signed;            return;        }        if (m_buffer[m_ptr+1] == 'i' &&            m_buffer[m_ptr+2] == 'z' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'o' &&            m_buffer[m_ptr+5] == 'f')        {            *kind = Token_sizeof;            return;        }        if (m_buffer[m_ptr+1] == 't' &&            m_buffer[m_ptr+2] == 'a' &&            m_buffer[m_ptr+3] == 't' &&            m_buffer[m_ptr+4] == 'i' &&            m_buffer[m_ptr+5] == 'c')        {            *kind = Token_static;            return;        }        if (m_buffer[m_ptr+1] == 't' &&            m_buffer[m_ptr+2] == 'r' &&            m_buffer[m_ptr+3] == 'u' &&            m_buffer[m_ptr+4] == 'c' &&            m_buffer[m_ptr+5] == 't')        {            *kind = Token_struct;            return;        }        if (m_buffer[m_ptr+1] == 'w' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 't' &&            m_buffer[m_ptr+4] == 'c' &&            m_buffer[m_ptr+5] == 'h')        {            *kind = Token_switch;            return;        }        break;        case 'r':        if (m_buffer[m_ptr+1] == 'e' &&            m_buffer[m_ptr+2] == 't' &&            m_buffer[m_ptr+3] == 'u' &&            m_buffer[m_ptr+4] == 'r' &&            m_buffer[m_ptr+5] == 'n')        {            *kind = Token_return;            return;        }        break;        case 't':        if (m_buffer[m_ptr+1] == 'y' &&            m_buffer[m_ptr+2] == 'p' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'i' &&            m_buffer[m_ptr+5] == 'd')        {            *kind = Token_typeid;            return;        }        break;        case 'x':        if (m_buffer[m_ptr+1] == 'o' &&            m_buffer[m_ptr+2] == 'r' &&            m_buffer[m_ptr+3] == '_' &&            m_buffer[m_ptr+4] == 'e' &&            m_buffer[m_ptr+5] == 'q')        {            *kind = Token_xor_eq;            return;        }        break;        case 'k':        if (m_buffer[m_ptr+1] == '_' &&            m_buffer[m_ptr+2] == 'd' &&            m_buffer[m_ptr+3] == 'c' &&            m_buffer[m_ptr+4] == 'o' &&            m_buffer[m_ptr+5] == 'p')        {            *kind = Token_k_dcop;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword7(int *kind){    switch (m_buffer[m_ptr]) {        case 'd':        if (m_buffer[m_ptr+1] == 'e' &&            m_buffer[m_ptr+2] == 'f' &&            m_buffer[m_ptr+3] == 'a' &&            m_buffer[m_ptr+4] == 'u' &&            m_buffer[m_ptr+5] == 'l' &&            m_buffer[m_ptr+6] == 't')        {            *kind = Token_default;            return;        }        break;        case 'm':        if (m_buffer[m_ptr+1] == 'u' &&            m_buffer[m_ptr+2] == 't' &&            m_buffer[m_ptr+3] == 'a' &&            m_buffer[m_ptr+4] == 'b' &&            m_buffer[m_ptr+5] == 'l' &&            m_buffer[m_ptr+6] == 'e')        {            *kind = Token_mutable;            return;        }        break;        case 'p':        if (m_buffer[m_ptr+1] == 'r' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 'v' &&            m_buffer[m_ptr+4] == 'a' &&            m_buffer[m_ptr+5] == 't' &&            m_buffer[m_ptr+6] == 'e')        {            *kind = Token_private;            return;        }        break;#if 0        case 's':        if (m_buffer[m_ptr+1] == 'i' &&            m_buffer[m_ptr+2] == 'g' &&            m_buffer[m_ptr+3] == 'n' &&            m_buffer[m_ptr+4] == 'a' &&            m_buffer[m_ptr+5] == 'l' &&            m_buffer[m_ptr+6] == 's')        {            *kind = Token_signals;            return;        }        break;#endif        case 't':        if (m_buffer[m_ptr+1] == 'y' &&            m_buffer[m_ptr+2] == 'p' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'd' &&            m_buffer[m_ptr+5] == 'e' &&            m_buffer[m_ptr+6] == 'f')        {            *kind = Token_typedef;            return;        }        break;        case 'v':        if (m_buffer[m_ptr+1] == 'i' &&            m_buffer[m_ptr+2] == 'r' &&            m_buffer[m_ptr+3] == 't' &&            m_buffer[m_ptr+4] == 'u' &&            m_buffer[m_ptr+5] == 'a' &&            m_buffer[m_ptr+6] == 'l')        {            *kind = Token_virtual;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword8(int *kind){    switch (m_buffer[m_ptr]) {        case '_':        if (m_buffer[m_ptr+1] == '_' &&            m_buffer[m_ptr+2] == 't' &&            m_buffer[m_ptr+3] == 'y' &&            m_buffer[m_ptr+4] == 'p' &&            m_buffer[m_ptr+5] == 'e' &&            m_buffer[m_ptr+6] == 'o' &&            m_buffer[m_ptr+7] == 'f')        {            *kind = Token___typeof;            return;        }        break;        case 'c':        if (m_buffer[m_ptr+1] == 'o' &&            m_buffer[m_ptr+2] == 'n' &&            m_buffer[m_ptr+3] == 't' &&            m_buffer[m_ptr+4] == 'i' &&            m_buffer[m_ptr+5] == 'n' &&            m_buffer[m_ptr+6] == 'u' &&            m_buffer[m_ptr+7] == 'e')        {            *kind = Token_continue;            return;        }        break;        case 'e':        if (m_buffer[m_ptr+1] == 'x' &&            m_buffer[m_ptr+2] == 'p' &&            m_buffer[m_ptr+3] == 'l' &&            m_buffer[m_ptr+4] == 'i' &&            m_buffer[m_ptr+5] == 'c' &&            m_buffer[m_ptr+6] == 'i' &&            m_buffer[m_ptr+7] == 't')        {            *kind = Token_explicit;            return;        }        break;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?