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

📄 qscriptlexer_p.h

📁 奇趣公司比较新的qt/emd版本
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtScript module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QSCRIPTLEXER_P_H#define QSCRIPTLEXER_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists purely as an// implementation detail.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include <QtCore/QString>#ifndef QT_NO_SCRIPTclass QScriptEngine;class QScriptEnginePrivate;class QScriptNameIdImpl;namespace QScript {class Lexer{public:    Lexer(QScriptEngine *eng);    ~Lexer();    void setCode(const QString &c, int lineno);    int lex();    int currentLineNo() const { return yylineno; }    int currentColumnNo() const { return yycolumn; }    int startLineNo() const { return startlineno; }    int startColumnNo() const { return startcolumn; }    int endLineNo() const { return currentLineNo(); }    int endColumnNo() const    { int col = currentColumnNo(); return (col > 0) ? col - 1 : col; }    bool prevTerminator() const { return terminator; }    enum State { Start,                 Identifier,                 InIdentifier,                 InSingleLineComment,                 InMultiLineComment,                 InNum,                 InNum0,                 InHex,                 InOctal,                 InDecimal,                 InExponentIndicator,                 InExponent,                 Hex,                 Octal,                 Number,                 String,                 Eof,                 InString,                 InEscapeSequence,                 InHexEscape,                 InUnicodeEscape,                 Other,                 Bad };    bool scanRegExp();    void scanExtraIdentifiers(bool scan)        { extraIdentifiers = scan; }    QScriptNameIdImpl *pattern;    QScriptNameIdImpl *flags;    State lexerState() const        { return state; }    QString errorMessage() const        { return errmsg; }    void setErrorMessage(const QString &err)        { errmsg = err; }    void setErrorMessage(const char *err)        { setErrorMessage(QString::fromLatin1(err)); }private:    QScriptEnginePrivate *driver;    int yylineno;    bool done;    char *buffer8;    QChar *buffer16;    uint size8, size16;    uint pos8, pos16;    bool terminator;    bool restrKeyword;    // treat "null", "false" and "true" as identifiers    bool extraIdentifiers;    // encountered delimiter like "'" and "}" on last run    bool delimited;    int stackToken;    State state;    void setDone(State s);    uint pos;    void shift(uint p);    int lookupKeyword(const char *);    bool isWhiteSpace() const;    bool isLineTerminator() const;    bool isHexDigit(ushort c) const;    bool isOctalDigit(ushort c) const;    int matchPunctuator(ushort c1, ushort c2,                         ushort c3, ushort c4);    ushort singleEscape(ushort c) const;    ushort convertOctal(ushort c1, ushort c2,                         ushort c3) const;public:    static unsigned char convertHex(ushort c1);    static unsigned char convertHex(ushort c1, ushort c2);    static QChar convertUnicode(ushort c1, ushort c2,                                 ushort c3, ushort c4);    static bool isIdentLetter(ushort c);    static bool isDecimalDigit(ushort c);    inline int ival() const { return qsyylval.ival; }    inline double dval() const { return qsyylval.dval; }    inline QScriptNameIdImpl *ustr() const { return qsyylval.ustr; }private:    void record8(ushort c);    void record16(QChar c);    void recordStartPos();    int findReservedWord(const QChar *buffer, int size) const;    const QChar *code;    uint length;    int yycolumn;    int startlineno;    int startcolumn;    int bol;     // begin of line    union {        int ival;        double dval;        QScriptNameIdImpl *ustr;    } qsyylval;    // current and following unicode characters    ushort current, next1, next2, next3;    struct keyword {        const char *name;        int token;    };    QString errmsg;    bool wantRx;    bool check_reserved;};} // namespace QScript#endif // QT_NO_SCRIPT#endif

⌨️ 快捷键说明

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