void MetaInfoReader::propertyDefinition(const QString &name, const QVariant &value) { switch (parserState()) { case ParsingType: readTypeProperty(name, value); break; case ParsingItemLibrary: readItemLibraryEntryProperty(name, value); break; case ParsingProperty: readPropertyProperty(name, value); break; case ParsingQmlSource: readQmlSourceProperty(name, value); break; case ParsingMetaInfo: addError(tr("No property definition allowed"), currentSourceLocation()); break; case ParsingDocument: case Finished: case Undefined: setParserState(Error); addError(tr("Illegal state while parsing"), currentSourceLocation()); case Error: default: return; } }
void MetaInfoReader::elementStart(const QString &name) { switch (parserState()) { case ParsingDocument: setParserState(readDocument(name)); break; case ParsingMetaInfo: setParserState(readMetaInfoRootElement(name)); break; case ParsingType: setParserState(readTypeElement(name)); break; case ParsingItemLibrary: setParserState(readItemLibraryEntryElement(name)); break; case ParsingProperty: setParserState(readPropertyElement(name)); break; case ParsingQmlSource: setParserState(readQmlSourceElement(name)); break; case Finished: case Undefined: setParserState(Error); addError(tr("Illegal state while parsing"), currentSourceLocation()); case Error: default: return; } }
void MetaInfoReader::elementEnd() { switch (parserState()) { case ParsingMetaInfo: setParserState(Finished); break; case ParsingType: setParserState(ParsingMetaInfo); break; case ParsingItemLibrary: insertItemLibraryEntry(); setParserState((ParsingType)); break; case ParsingProperty: insertProperty(); setParserState(ParsingItemLibrary); break; case ParsingQmlSource: setParserState(ParsingItemLibrary); break; case ParsingDocument: case Finished: case Undefined: setParserState(Error); addError(tr("Illegal state while parsing"), currentSourceLocation()); case Error: default: return; } }
Parser *TestingTaskFactory::newParser(Model *model) { Parser *parser = new Parser(model, model->m_socketFactory->create(), Common::ConnectionId::next()); ParserState parserState(parser); QObject::connect(parser, SIGNAL(responseReceived(Imap::Parser*)), model, SLOT(responseReceived(Imap::Parser*)), Qt::QueuedConnection); QObject::connect(parser, SIGNAL(connectionStateChanged(Imap::Parser*,Imap::ConnectionState)), model, SLOT(handleSocketStateChanged(Imap::Parser*,Imap::ConnectionState))); QObject::connect(parser, SIGNAL(lineReceived(Imap::Parser*,QByteArray)), model, SLOT(slotParserLineReceived(Imap::Parser*,QByteArray))); QObject::connect(parser, SIGNAL(lineSent(Imap::Parser*,QByteArray)), model, SLOT(slotParserLineSent(Imap::Parser*,QByteArray))); model->m_parsers[ parser ] = parserState; model->m_taskModel->slotParserCreated(parser); return parser; }
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------ int main(int argc, char* argv[]) { GLCCPreprocessor* preproc = NULL; GLCCint errCode = GLCCError_Ok; GLCCint tmpErrCode = GLCCError_Ok; GLPPOptions opts; extern const LexicalEntry* GetGlslTokens(); extern const char** GetGlslReservedTypes(); StateObject parserState(GetGlslReservedTypes()); Lexer myLex(GetGlslTokens(), "struct Foo {\n\tdmat2x2 bar[3];\n\tfloat baz;\n};", &parserState); for (Token tok = myLex.Pop(); !tok.IsEOF(); tok = myLex.Pop()) { std::cout << tok << std::endl; } if (argc < 2) { errCode = GLCCError_MissingRequiredParameter; goto exit; } if ((errCode = genPreprocessor(&preproc, &opts)) != GLCCError_Ok) goto exit; if ((errCode = preprocessFromFile(preproc, argv[1])) != GLCCError_Ok) { const char* errText = getLastError(preproc); if (errText) { printf("Error reported during preprocessing: \"%s\"\n", errText); } goto cleanup; } cleanup: tmpErrCode = deletePreprocessor(&preproc); if (tmpErrCode != GLCCError_Ok) { printf("Error while cleaning up: '%d', main still returning preprocess status.", tmpErrCode); } exit: return errCode; }