예제 #1
0
//See visitNewArray in attr.cpp
void Pretty::visitNewArray(JCNewArray* that) {
    print("new ");

    JCExpression* elementType = that->elementType.get();

    //print base type part of elementType
    if (elementType->treeTag == Tree::TYPEARRAY) {
        //int[][]
        treeinfo::innermostType(elementType)->accept(this);
    } else {
        //int
        elementType->accept(this);
    }

    //print dimens
    if (that->dimens.size() > 0) {
        printTreeList(that->dimens, ",", "[", "]");
    }

    //print array part of elementType
    if (elementType->treeTag == Tree::TYPEARRAY) {
        printBrackets(dynamic_cast<JCArrayTypeTree*>(elementType));
    }

    //print init part
    printTreeList(that->elems, ",", " {", "}");
}
예제 #2
0
void Pretty::visitMethodDef(JCMethodDecl* that) {
    if (that->mods != nullptr) {
        that->mods->accept(this);
    }

    that->resType->accept(this);
    addSpace();
    print(that->name.desc);
    addSpace();

    printTreeList(that->params, ",", "(", ") ");
    that->body->accept(this);
}
예제 #3
0
void Pretty::visitNewClass(JCNewClass* that) {
    print("new ");
    that->clazz->accept(this);
    printTreeList(that->arguments, ",", "(", ")");
}
예제 #4
0
void Pretty::visitApply(JCMethodInvocation* that) {
    that->meth->accept(this);

    printTreeList(that->args, ",", "(", ")");
}
예제 #5
0
파일: ObjectTree.c 프로젝트: riolet/rix
void printTree(Object * tree, int indent)
{

    if (getFlag(tree, FLAG_EXTERNAL)) {
        return;
    }

    int i;
    if (tree == 0) {
        for (i = 0; i < indent; i++) {
            printf("  ");
        }
        printf("Object: (null)\n");
        return;
    }

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("Object: name: \"%s\"\n", tree->name);

    indent += 1;
    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("fullname: \"%s\"\n", tree->fullname);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("parentScope: %s\n",
           tree->parentScope ? tree->parentScope->fullname : "(null)");

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("parentClass: %s\n",
           tree->parentClass ? tree->parentClass->fullname : "(null)");

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("category: ");
    printType(tree->category);
    printf("\n");

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("returnType: \"%s\"\n", tree->returnType);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("paramTypes: ");

    printSequential(tree->paramTypes, indent + 1, 0);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("definedSymbols: \n");

    printTreeList(tree->definedSymbols, indent + 1);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("code: \n");

    printSequential(tree->code, indent + 1, 1);

}
예제 #6
0
파일: ObjectTree.c 프로젝트: riolet/rix
//used to debug to file ( prints tree to file with fname )
void printTreeToFile(Object * tree, int indent, char *fname)
{

    int i;

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("Object: name: \"%s\"\n", tree->name);

    indent += 1;

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("fullname: \"%s\"\n", tree->fullname);

    if (tree->parentScope == 0) {

        for (i = 0; i < indent; i++) {
            printf("  ");
        }
        printf("parentObject: (null)\n");

    } else {

        for (i = 0; i < indent; i++) {
            printf("  ");
        }
        printf("parentObject: %s\n", tree->parentScope->fullname);

    }

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("category: ");
    printType(tree->category);
    printf("\n");

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("returnType: \"%s\"\n", tree->returnType);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("paramTypes: ");

    printSequential(tree->paramTypes, indent + 1, 0);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("definedSymbols: \n");

    printTreeList(tree->definedSymbols, indent + 1);

    for (i = 0; i < indent; i++) {
        printf("  ");
    }
    printf("code: \n");

    printSequential(tree->code, indent + 1, 1);

}