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

📄 lextads3.cxx

📁 porting scintilla to qt
💻 CXX
📖 第 1 页 / 共 3 页
字号:
        sc.SetState(initState);}static void ColouriseTADS3MsgParam(StyleContext &sc, int &lineState) {        int endState = sc.state;        int chQuote = '"';        switch (endState) {                case SCE_T3_S_STRING:                        sc.SetState(SCE_T3_MSG_PARAM);                        sc.Forward();                        chQuote = '\'';                        break;                case SCE_T3_D_STRING:                case SCE_T3_X_STRING:                        sc.SetState(SCE_T3_MSG_PARAM);                        sc.Forward();                        break;                case SCE_T3_MSG_PARAM:                        if (lineState&T3_SINGLE_QUOTE) {                                endState = SCE_T3_S_STRING;                                chQuote = '\'';                        } else if (lineState&T3_INT_EXPRESSION) {                                endState = SCE_T3_X_STRING;                        } else {                                endState = SCE_T3_D_STRING;                        }                        break;        }        while (sc.More() && sc.ch != '}' && sc.ch != chQuote) {                if (IsEOL(sc.ch, sc.chNext)) {                        return;                }                if (sc.ch == '\\') {                        sc.Forward();                }                sc.Forward();        }        if (sc.ch == chQuote) {                sc.SetState(endState);        } else {                sc.ForwardSetState(endState);        }}static void ColouriseTADS3LibDirective(StyleContext &sc, int &lineState) {        int initState = sc.state;        int chQuote = '"';        switch (initState) {                case SCE_T3_S_STRING:                        sc.SetState(SCE_T3_LIB_DIRECTIVE);                        sc.Forward(2);                        chQuote = '\'';                        break;                case SCE_T3_D_STRING:                        sc.SetState(SCE_T3_LIB_DIRECTIVE);                        sc.Forward(2);                        break;                case SCE_T3_LIB_DIRECTIVE:                        if (lineState&T3_SINGLE_QUOTE) {                                initState = SCE_T3_S_STRING;                                chQuote = '\'';                        } else {                                initState = SCE_T3_D_STRING;                        }                        break;        }        while (sc.More() && IsADirectiveChar(sc.ch)) {                if (IsEOL(sc.ch, sc.chNext)) {                        return;                }                sc.Forward();        };        if (sc.ch == '>' || !sc.More()) {                sc.ForwardSetState(initState);        } else if (sc.ch == chQuote) {                sc.SetState(initState);        } else {                sc.ChangeState(initState);                sc.Forward();        }}static void ColouriseTADS3String(StyleContext &sc, int &lineState) {        int chQuote = sc.ch;        int endState = sc.state;        switch (sc.state) {                case SCE_T3_DEFAULT:                case SCE_T3_X_DEFAULT:                        if (chQuote == '"') {                                if (sc.state == SCE_T3_DEFAULT) {                                        sc.SetState(SCE_T3_D_STRING);                                } else {                                        sc.SetState(SCE_T3_X_STRING);                                }                                lineState &= ~T3_SINGLE_QUOTE;                        } else {                                sc.SetState(SCE_T3_S_STRING);                                lineState |= T3_SINGLE_QUOTE;                        }                        sc.Forward();                        break;                case SCE_T3_S_STRING:                        chQuote = '\'';                        endState = lineState&T3_INT_EXPRESSION ?                                SCE_T3_X_DEFAULT : SCE_T3_DEFAULT;                        break;                case SCE_T3_D_STRING:                        chQuote = '"';                        endState = SCE_T3_DEFAULT;                        break;                case SCE_T3_X_STRING:                        chQuote = '"';                        endState = SCE_T3_X_DEFAULT;                        break;        }        while (sc.More()) {                if (IsEOL(sc.ch, sc.chNext)) {                        return;                }                if (sc.ch == chQuote) {                        sc.ForwardSetState(endState);                        return;                }                if (sc.state == SCE_T3_D_STRING && sc.Match('<', '<')) {                        lineState |= T3_INT_EXPRESSION;                        sc.SetState(SCE_T3_X_DEFAULT);                        sc.Forward(2);                        return;                }                if (sc.Match('\\', static_cast<char>(chQuote))                    || sc.Match('\\', '\\')) {                        sc.Forward(2);                } else if (sc.ch == '{') {                        ColouriseTADS3MsgParam(sc, lineState);                } else if (sc.Match('<', '.')) {                        ColouriseTADS3LibDirective(sc, lineState);                } else if (sc.ch == '<') {                        ColouriseTADS3HTMLTag(sc, lineState);                        if (sc.state == SCE_T3_X_DEFAULT)                                return;                } else {                        sc.Forward();                }        }}static void ColouriseTADS3Comment(StyleContext &sc, int endState) {        sc.SetState(SCE_T3_BLOCK_COMMENT);        while (sc.More()) {                if (IsEOL(sc.ch, sc.chNext)) {                        return;                }                if (sc.Match('*', '/')) {                        sc.Forward(2);                        sc.SetState(endState);                        return;                }                sc.Forward();        }}static void ColouriseToEndOfLine(StyleContext &sc, int initState, int endState) {        sc.SetState(initState);        while (sc.More()) {                if (sc.ch == '\\') {                        sc.Forward();                        if (IsEOLSkip(sc)) {                                        return;                        }                }                if (IsEOL(sc.ch, sc.chNext)) {                        sc.SetState(endState);                        return;                }                sc.Forward();        }}static void ColouriseTADS3Number(StyleContext &sc) {        int endState = sc.state;        bool inHexNumber = false;        bool seenE = false;        bool seenDot = sc.ch == '.';        sc.SetState(SCE_T3_NUMBER);        if (sc.More()) {                sc.Forward();        }        if (sc.chPrev == '0' && tolower(sc.ch) == 'x') {                inHexNumber = true;                sc.Forward();        }        while (sc.More()) {                if (inHexNumber) {                        if (!IsAHexDigit(sc.ch)) {                                break;                        }                } else if (!isdigit(sc.ch)) {                        if (!seenE && tolower(sc.ch) == 'e') {                                seenE = true;                                seenDot = true;                                if (sc.chNext == '+' || sc.chNext == '-') {                                        sc.Forward();                                }                        } else if (!seenDot && sc.ch == '.') {                                seenDot = true;                        } else {                                break;                        }                }                sc.Forward();        }        sc.SetState(endState);}static void ColouriseTADS3Doc(unsigned int startPos, int length, int initStyle,                                                           WordList *keywordlists[], Accessor &styler) {        int visibleChars = 0;        int bracketLevel = 0;        int lineState = 0;        unsigned int endPos = startPos + length;        int lineCurrent = styler.GetLine(startPos);        if (lineCurrent > 0) {                lineState = styler.GetLineState(lineCurrent-1);        }        StyleContext sc(startPos, length, initStyle, styler);        while (sc.More()) {                if (IsEOL(sc.ch, sc.chNext)) {                        styler.SetLineState(lineCurrent, lineState);                        lineCurrent++;                        visibleChars = 0;                        sc.Forward();                        if (sc.ch == '\n') {                                sc.Forward();                        }                }                switch(sc.state) {                        case SCE_T3_PREPROCESSOR:                        case SCE_T3_LINE_COMMENT:                                ColouriseToEndOfLine(sc, sc.state, lineState&T3_INT_EXPRESSION ?                                        SCE_T3_X_DEFAULT : SCE_T3_DEFAULT);                                break;                        case SCE_T3_S_STRING:                        case SCE_T3_D_STRING:                        case SCE_T3_X_STRING:                                ColouriseTADS3String(sc, lineState);                                visibleChars++;                                break;                        case SCE_T3_MSG_PARAM:                                ColouriseTADS3MsgParam(sc, lineState);                                break;                        case SCE_T3_LIB_DIRECTIVE:                                ColouriseTADS3LibDirective(sc, lineState);                                break;                        case SCE_T3_HTML_DEFAULT:                                ColouriseTADS3HTMLTag(sc, lineState);                                break;                        case SCE_T3_HTML_STRING:                                ColouriseTADSHTMLString(sc, lineState);                                break;                        case SCE_T3_BLOCK_COMMENT:                                ColouriseTADS3Comment(sc, lineState&T3_INT_EXPRESSION ?                                        SCE_T3_X_DEFAULT : SCE_T3_DEFAULT);                                break;                        case SCE_T3_DEFAULT:                        case SCE_T3_X_DEFAULT:                                if (IsASpaceOrTab(sc.ch)) {                                        sc.Forward();                                } else if (sc.ch == '#' && visibleChars == 0) {                                        ColouriseToEndOfLine(sc, SCE_T3_PREPROCESSOR, sc.state);                                } else if (sc.Match('/', '*')) {                                        ColouriseTADS3Comment(sc, sc.state);                                        visibleChars++;                                } else if (sc.Match('/', '/')) {                                        ColouriseToEndOfLine(sc, SCE_T3_LINE_COMMENT, sc.state);                                } else if (sc.ch == '"') {                                        bracketLevel = 0;                                        ColouriseTADS3String(sc, lineState);                                        visibleChars++;                                } else if (sc.ch == '\'') {                                        ColouriseTADS3String(sc, lineState);                                        visibleChars++;                                } else if (sc.state == SCE_T3_X_DEFAULT && bracketLevel == 0                                                   && sc.Match('>', '>')) {                                        sc.Forward(2);                                        sc.SetState(SCE_T3_D_STRING);                                        if (lineState & T3_INT_EXPRESSION_IN_TAG)                                                sc.SetState(SCE_T3_HTML_STRING);                                        lineState &= ~(T3_SINGLE_QUOTE|T3_INT_EXPRESSION                                                       |T3_INT_EXPRESSION_IN_TAG);                                } else if (IsATADS3Operator(sc.ch)) {                                        if (sc.state == SCE_T3_X_DEFAULT) {                                                if (sc.ch == '(') {                                                        bracketLevel++;                                                } else if (sc.ch == ')' && bracketLevel > 0) {                                                        bracketLevel--;                                                }                                        }                                        ColouriseTADS3Operator(sc);                                        visibleChars++;

⌨️ 快捷键说明

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