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;
    }
}
Exemple #4
0
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;
}
Exemple #5
0
// ------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------
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;
}