⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpplexer.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
            m_buffer[m_ptr+2] == 'e' &&            m_buffer[m_ptr+3] == 'r' &&            m_buffer[m_ptr+4] == 'a' &&            m_buffer[m_ptr+5] == 't' &&            m_buffer[m_ptr+6] == 'o' &&            m_buffer[m_ptr+7] == 'r')        {            *kind = Token_operator;            return;        }        break;        case 'Q':        if (m_buffer[m_ptr+1] == '_' &&            m_buffer[m_ptr+2] == 'O' &&            m_buffer[m_ptr+3] == 'B' &&            m_buffer[m_ptr+4] == 'J' &&            m_buffer[m_ptr+5] == 'E' &&            m_buffer[m_ptr+6] == 'C' &&            m_buffer[m_ptr+7] == 'T')        {            *kind = Token_Q_OBJECT;            return;        }        break;        case 'r':        if (m_buffer[m_ptr+1] == 'e' &&            m_buffer[m_ptr+2] == 'g' &&            m_buffer[m_ptr+3] == 'i' &&            m_buffer[m_ptr+4] == 's' &&            m_buffer[m_ptr+5] == 't' &&            m_buffer[m_ptr+6] == 'e' &&            m_buffer[m_ptr+7] == 'r')        {            *kind = Token_register;            return;        }        break;        case 'u':        if (m_buffer[m_ptr+1] == 'n' &&            m_buffer[m_ptr+2] == 's' &&            m_buffer[m_ptr+3] == 'i' &&            m_buffer[m_ptr+4] == 'g' &&            m_buffer[m_ptr+5] == 'n' &&            m_buffer[m_ptr+6] == 'e' &&            m_buffer[m_ptr+7] == 'd')        {            *kind = Token_unsigned;            return;        }        break;        case 't':        if (m_buffer[m_ptr+1] == 'e' &&            m_buffer[m_ptr+2] == 'm' &&            m_buffer[m_ptr+3] == 'p' &&            m_buffer[m_ptr+4] == 'l' &&            m_buffer[m_ptr+5] == 'a' &&            m_buffer[m_ptr+6] == 't' &&            m_buffer[m_ptr+7] == 'e')        {            *kind = Token_template;            return;        }        if (m_buffer[m_ptr+1] == 'y' &&            m_buffer[m_ptr+2] == 'p' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 'n' &&            m_buffer[m_ptr+5] == 'a' &&            m_buffer[m_ptr+6] == 'm' &&            m_buffer[m_ptr+7] == 'e')        {            *kind = Token_typename;            return;        }        break;        case 'v':        if (m_buffer[m_ptr+1] == 'o' &&            m_buffer[m_ptr+2] == 'l' &&            m_buffer[m_ptr+3] == 'a' &&            m_buffer[m_ptr+4] == 't' &&            m_buffer[m_ptr+5] == 'i' &&            m_buffer[m_ptr+6] == 'l' &&            m_buffer[m_ptr+7] == 'e')        {            *kind = Token_volatile;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword9(int *kind){    switch (m_buffer[m_ptr]) {        case 'p':        if (m_buffer[m_ptr+1] == 'r' &&            m_buffer[m_ptr+2] == 'o' &&            m_buffer[m_ptr+3] == 't' &&            m_buffer[m_ptr+4] == 'e' &&            m_buffer[m_ptr+5] == 'c' &&            m_buffer[m_ptr+6] == 't' &&            m_buffer[m_ptr+7] == 'e' &&            m_buffer[m_ptr+8] == 'd')        {            *kind = Token_protected;            return;        }        break;        case 'n':        if (m_buffer[m_ptr+1] == 'a' &&            m_buffer[m_ptr+2] == 'm' &&            m_buffer[m_ptr+3] == 'e' &&            m_buffer[m_ptr+4] == 's' &&            m_buffer[m_ptr+5] == 'p' &&            m_buffer[m_ptr+6] == 'a' &&            m_buffer[m_ptr+7] == 'c' &&            m_buffer[m_ptr+8] == 'e')        {            *kind = Token_namespace;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword10(int *kind){    switch (m_buffer[m_ptr]) {        case 'c':        if (m_buffer[m_ptr+1] == 'o' &&            m_buffer[m_ptr+2] == 'n' &&            m_buffer[m_ptr+3] == 's' &&            m_buffer[m_ptr+4] == 't' &&            m_buffer[m_ptr+5] == '_' &&            m_buffer[m_ptr+6] == 'c' &&            m_buffer[m_ptr+7] == 'a' &&            m_buffer[m_ptr+8] == 's' &&            m_buffer[m_ptr+9] == 't')        {            *kind = Token_const_cast;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword11(int *kind){    switch (m_buffer[m_ptr]) {        case 's':        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' &&            m_buffer[m_ptr+6] == '_' &&            m_buffer[m_ptr+7] == 'c' &&            m_buffer[m_ptr+8] == 'a' &&            m_buffer[m_ptr+9] == 's' &&            m_buffer[m_ptr+10] == 't')        {            *kind = Token_static_cast;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword12(int *kind){    switch (m_buffer[m_ptr]) {        case 'd':        if (m_buffer[m_ptr+1] == 'y' &&            m_buffer[m_ptr+2] == 'n' &&            m_buffer[m_ptr+3] == 'a' &&            m_buffer[m_ptr+4] == 'm' &&            m_buffer[m_ptr+5] == 'i' &&            m_buffer[m_ptr+6] == 'c' &&            m_buffer[m_ptr+7] == '_' &&            m_buffer[m_ptr+8] == 'c' &&            m_buffer[m_ptr+9] == 'a' &&            m_buffer[m_ptr+10] == 's' &&            m_buffer[m_ptr+11] == 't')        {            *kind = Token_dynamic_cast;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword14(int *kind){    switch (m_buffer[m_ptr]) {        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' &&            m_buffer[m_ptr+6] == '_' &&            m_buffer[m_ptr+7] == 's' &&            m_buffer[m_ptr+8] == 'i' &&            m_buffer[m_ptr+9] == 'g' &&            m_buffer[m_ptr+10] == 'n' &&            m_buffer[m_ptr+11] == 'a' &&            m_buffer[m_ptr+12] == 'l' &&            m_buffer[m_ptr+13] == 's')        {            *kind = Token_k_dcop_signals;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanKeyword16(int *kind){    switch (m_buffer[m_ptr]) {        case 'r':        if (m_buffer[m_ptr+1] == 'e' &&            m_buffer[m_ptr+2] == 'i' &&            m_buffer[m_ptr+3] == 'n' &&            m_buffer[m_ptr+4] == 't' &&            m_buffer[m_ptr+5] == 'e' &&            m_buffer[m_ptr+6] == 'r' &&            m_buffer[m_ptr+7] == 'p' &&            m_buffer[m_ptr+8] == 'r' &&            m_buffer[m_ptr+9] == 'e' &&            m_buffer[m_ptr+10] == 't' &&            m_buffer[m_ptr+11] == '_' &&            m_buffer[m_ptr+12] == 'c' &&            m_buffer[m_ptr+13] == 'a' &&            m_buffer[m_ptr+14] == 's' &&            m_buffer[m_ptr+15] == 't')        {            *kind = Token_reinterpret_cast;            return;        }        break;    }    *kind = Token_identifier;}void CppLexer::scanChar(int *kind){    *kind = m_buffer[m_ptr++];}void CppLexer::scanWhiteSpaces(int *kind){    *kind = Token_whitespaces;}void CppLexer::scanNewline(int *kind){    *kind = '\n';}void CppLexer::scanUnicodeChar(int *kind){    *kind = m_buffer[0];}void CppLexer::scanCharLiteral(int *kind){    *kind = Token_char_literal;}void CppLexer::scanStringLiteral(int *kind){    *kind = Token_string_literal;}void CppLexer::scanIdentifier(int *kind){    if (m_len <16)        (this->*s_scan_keyword_table[m_len])(kind);    else        (this->*s_scan_keyword_table[0])(kind);}void CppLexer::scanNumberLiteral(int *kind){    *kind = Token_number_literal;}void CppLexer::scanOperator(int *kind){    switch (m_buffer[m_ptr]) {    case ':':        if (m_buffer[m_ptr+1] == ':') {            *kind = Token_scope;            return;        }        break;    case '*':    case '/':    case '%':    case '^':        if (m_buffer[m_ptr+1] == '=') {            *kind = Token_assign;            return;        }        break;    case '=':    case '!':        if (m_buffer[m_ptr+1] == '=') {            *kind = Token_eq;            return;        }        break;    case '&':        if (m_buffer[m_ptr+1] == '&') {            *kind = Token_and;            return;        } else if (m_buffer[m_ptr+1] == '=') {            *kind = Token_assign;            return;        }        break;    case '|':        if (m_buffer[m_ptr+1] == '|' ) {            *kind = Token_or;            return;        } else if (m_buffer[m_ptr+1] == '=') {            *kind = Token_assign;            return;        }        break;    case '+':        if (m_buffer[m_ptr+1] == '+' ) {            *kind = Token_incr;            return;        } else if (m_buffer[m_ptr+1] == '=') {            *kind = Token_assign;            return;        }        break;    case '<':        if (m_buffer[m_ptr+1] == '<') {            if (m_buffer[m_ptr+2] == '=') {                *kind = Token_assign;                return;            }            *kind = Token_shift;            return;        } else if (m_buffer[m_ptr+1] == '=') {            *kind = Token_leq;            return;        }        break;    case '>':        if (m_buffer[m_ptr+1] == '>') {            if (m_buffer[m_ptr+2] == '=') {                *kind = Token_assign;                return;            }            *kind = Token_shift;            return;        } else if (m_buffer[m_ptr+1] == '=') {            *kind = Token_geq;            return;        }        break;    case '-':        if (m_buffer[m_ptr+1] == '>') {            if (m_buffer[m_ptr+2] == '*') {                *kind = Token_ptrmem;                return;            }            *kind = Token_arrow;            return;        } else if (m_buffer[m_ptr+1] == '-') {            *kind = Token_decr;            return;        } else if (m_buffer[m_ptr+1] == '=') {            *kind = Token_assign;            return;        }        break;    case '.':        if (m_buffer[m_ptr+1] == '.' && m_buffer[m_ptr+2] == '.') {            *kind = Token_ellipsis;            return;        } else if (m_buffer[m_ptr+1] == '*') {            *kind = Token_ptrmem;            return;        }        break;    }    *kind = m_buffer[m_ptr++];}

⌨️ 快捷键说明

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