QCss::Scanner Class Reference

#include <qcssparser_p.h>

List of all members.


Detailed Description

Definition at line 518 of file qcssparser_p.h.

Static Public Member Functions

static QString preprocess (const QString &input)
static QVector< Symbolscan (const QString &preprocessedInput)
static const char * tokenName (TokenType t)


Member Function Documentation

QString Scanner::preprocess ( const QString input  )  [static]

Definition at line 1334 of file qcssparser.cpp.

References QString::at(), i, isHexDigit(), QString::mid(), qMin(), QString::replace(), QString::size(), QChar::toLatin1(), and QString::toUShort().

Referenced by QCss::Parser::Parser().

01335 {
01336     QString output = input;
01337 
01338     int i = 0;
01339     while (i < output.size()) {
01340         if (output.at(i) == QLatin1Char('\\')) {
01341 
01342             ++i;
01343             // test for unicode hex escape
01344             int hexCount = 0;
01345             const int hexStart = i;
01346             while (i < output.size()
01347                    && isHexDigit(output.at(i).toLatin1())
01348                    && hexCount < 7) {
01349                 ++hexCount;
01350                 ++i;
01351             }
01352             if (hexCount == 0)
01353                 continue;
01354 
01355             hexCount = qMin(hexCount, 6);
01356             bool ok = false;
01357             ushort code = output.mid(hexStart, hexCount).toUShort(&ok, 16);
01358             if (ok) {
01359                 output.replace(hexStart - 1, hexCount + 1, QChar(code));
01360                 i = hexStart;
01361             } else {
01362                 i = hexStart;
01363             }
01364         } else {
01365             ++i;
01366         }
01367     }
01368     return output;
01369 }

Here is the call graph for this function:

QVector< Symbol > Scanner::scan ( const QString preprocessedInput  )  [static]

Definition at line 1384 of file qcssparser.cpp.

References QVector< T >::append(), QCssScanner_Generated::input, QCss::Symbol::len, QCssScanner_Generated::lex(), QCssScanner_Generated::lexemLength, QCssScanner_Generated::lexemStart, QCss::Symbol::start, QCss::Symbol::text, and QCss::Symbol::token.

Referenced by QCss::Parser::Parser().

01385 {
01386     QVector<Symbol> symbols;
01387     QCssScanner_Generated scanner(preprocessedInput);
01388     Symbol sym;
01389     int tok = scanner.lex();
01390     while (tok != -1) {
01391         sym.token = static_cast<TokenType>(tok);
01392         sym.text = scanner.input;
01393         sym.start = scanner.lexemStart;
01394         sym.len = scanner.lexemLength;
01395         symbols.append(sym);
01396         tok = scanner.lex();
01397     }
01398     return symbols;
01399 }

Here is the call graph for this function:

const char * Scanner::tokenName ( TokenType  t  )  [static]

Definition at line 37 of file qcssparser.cpp.

References QCss::ATKEYWORD_SYM, QCss::CDC, QCss::CDO, QCss::COLON, QCss::COMMA, QCss::DASHMATCH, QCss::DOT, QCss::EQUAL, QCss::EXCLAMATION_SYM, QCss::FUNCTION, QCss::GREATER, QCss::HASH, QCss::IDENT, QCss::INCLUDES, QCss::INVALID, QCss::LBRACE, QCss::LBRACKET, QCss::LENGTH, QCss::LPAREN, QCss::MINUS, QCss::NONE, QCss::NUMBER, QCss::OR, QCss::PERCENTAGE, QCss::PLUS, QCss::RBRACE, QCss::RBRACKET, QCss::RPAREN, QCss::S, QCss::SEMICOLON, QCss::SLASH, QCss::STAR, and QCss::STRING.

00038 {
00039     switch (t) {
00040         case NONE: return "NONE";
00041         case S: return "S";
00042         case CDO: return "CDO";
00043         case CDC: return "CDC";
00044         case INCLUDES: return "INCLUDES";
00045         case DASHMATCH: return "DASHMATCH";
00046         case LBRACE: return "LBRACE";
00047         case PLUS: return "PLUS";
00048         case GREATER: return "GREATER";
00049         case COMMA: return "COMMA";
00050         case STRING: return "STRING";
00051         case INVALID: return "INVALID";
00052         case IDENT: return "IDENT";
00053         case HASH: return "HASH";
00054         case ATKEYWORD_SYM: return "ATKEYWORD_SYM";
00055         case EXCLAMATION_SYM: return "EXCLAMATION_SYM";
00056         case LENGTH: return "LENGTH";
00057         case PERCENTAGE: return "PERCENTAGE";
00058         case NUMBER: return "NUMBER";
00059         case FUNCTION: return "FUNCTION";
00060         case COLON: return "COLON";
00061         case SEMICOLON: return "SEMICOLON";
00062         case RBRACE: return "RBRACE";
00063         case SLASH: return "SLASH";
00064         case MINUS: return "MINUS";
00065         case DOT: return "DOT";
00066         case STAR: return "STAR";
00067         case LBRACKET: return "LBRACKET";
00068         case RBRACKET: return "RBRACKET";
00069         case EQUAL: return "EQUAL";
00070         case LPAREN: return "LPAREN";
00071         case RPAREN: return "RPAREN";
00072         case OR: return "OR";
00073     }
00074     return "";
00075 }


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 20:21:22 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1