#include <qcssparser_p.h>
Definition at line 518 of file qcssparser_p.h.
Static Public Member Functions | |
| static QString | preprocess (const QString &input) |
| static QVector< Symbol > | scan (const QString &preprocessedInput) |
| static const char * | tokenName (TokenType t) |
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:

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 }
1.5.1