示例#1
0
void Json_Parser::read_print(rapidjson::Value &va_p,const char*keyname){
    rapidjson::Value va;
    if (va_p.HasMember(keyname)) {
        va=va_p[keyname];
        std::string name(keyname);
        if (va.IsBool()) {
            const bool flag=va.GetBool();
            name+=":%d";
            CCLOG(name.c_str(),flag);
        }
        else if (va.IsDouble()) {
            const double flag=va.GetDouble();
            name+=":%f";
            CCLOG(name.c_str(),flag);
        }
        else if (va.IsInt()) {
            const int flag=va.GetInt();
            name+=":%d";
            CCLOG(name.c_str(),flag);
        }
        else if (va.IsString()) {
            const std::string flag=va.GetString();
            name+=":%s";
            CCLOG(name.c_str(),flag.c_str());
        }
        else if (va.IsNull()) {
            name+=":Null";
            CCLOG(name.c_str());
        }
        else if(va.IsObject())
        {
            
            CCLOG("obj--------%s",keyname);
            auto it=va.MemberBegin();
            for (;it!=va.MemberEnd();it++) {
                if (va.HasMember(it->name)) {
                    read_print(va,it->name.GetString());
                    
                }
            }
            
        }
        else if(va.IsArray())
        {
            
            CCLOG("array-------%s",keyname);
            for (int i=0; i<va.Size();i++) {
                
                read_print_for_array(va[i],i);
                
                
            }
        }
        
    }
}
示例#2
0
文件: parser.cpp 项目: UIKit0/pyston
AST_stmt* readASTStmt(BufferedReader *reader) {
    uint8_t type = reader->readByte();
    if (VERBOSITY("parsing") >= 2)
        printf("type = %d\n", type);
    if (type == 0)
        return NULL;

    uint8_t checkbyte = reader->readByte();
    assert(checkbyte == 0xae);

    switch (type) {
        case AST_TYPE::Assign:
            return read_assign(reader);
        case AST_TYPE::AugAssign:
            return read_augassign(reader);
        case AST_TYPE::Break:
            return read_break(reader);
        case AST_TYPE::ClassDef:
            return read_classdef(reader);
        case AST_TYPE::Continue:
            return read_continue(reader);
        case AST_TYPE::Expr:
            return read_expr(reader);
        case AST_TYPE::For:
            return read_for(reader);
        case AST_TYPE::FunctionDef:
            return read_functiondef(reader);
        case AST_TYPE::Global:
            return read_global(reader);
        case AST_TYPE::If:
            return read_if(reader);
        case AST_TYPE::Import:
            return read_import(reader);
        case AST_TYPE::ImportFrom:
            return read_importfrom(reader);
        case AST_TYPE::Pass:
            return read_pass(reader);
        case AST_TYPE::Print:
            return read_print(reader);
        case AST_TYPE::Return:
            return read_return(reader);
        case AST_TYPE::While:
            return read_while(reader);
        case AST_TYPE::With:
            return read_with(reader);
        default:
            fprintf(stderr, "Unknown stmt node type (parser.cpp:" STRINGIFY(__LINE__) "): %d\n", type);
            exit(1);
            break;
    }
}
示例#3
0
void Json_Parser::read_print_for_array(rapidjson::Value &va,int i){
    
    if (va.IsBool()) {
        const bool flag=va.GetBool();
        
        CCLOG("%d:%d",i,flag);
    }
    else if (va.IsDouble()) {
        const double flag=va.GetDouble();
        CCLOG("%d:%f",i,flag);
    }
    else if (va.IsInt()) {
        const int flag=va.GetInt();
        CCLOG("%d:%d",i,flag);
    }
    else if (va.IsString()) {
        const std::string flag=va.GetString();
        CCLOG("%d:%s",i,flag.c_str());
    }
    else if (va.IsNull()) {
        
        CCLOG("%d:null",i);
    }
    else if(va.IsObject())
    {
        CCLOG("obj----------%d",i);
        auto it=va.MemberBegin();
        for (;it!=va.MemberEnd();it++) {
            if (va.HasMember(it->name)) {
                read_print(va,it->name.GetString());
                
            }
        }
        
    }
    else if(va.IsArray())
    {
        CCLOG("array-------%d",i);
        for (int i=0; i<va.Size();i++) {
            
            read_print_for_array(va[i],i);
            
            
        }
        
    }
    
}
示例#4
0
//打印系列
void Json_Parser::read_Jasoitoos(const char*filepath){
    //创建文件
    rapidjson::Document doc;
    //提取字符串
    __String*str=__String::createWithContentsOfFile(filepath);
    //解析字符串(一级)
    doc.Parse<rapidjson::kParseDefaultFlags>(str->getCString());
    if (doc.HasParseError()) {
        CCLOG("error:%u",doc.GetParseError());
        return ;
    }
    
    CCASSERT(doc.IsObject(),"json is error");
    auto it=doc.MemberBegin();
    for (;it!=doc.MemberEnd();it++) {
        read_print(doc,it->name.GetString());
    }
    
}