/* Print */ void Class::print() { printf("magic number: 0x%X\n", magic); printf("major ver: 0x%02X (%d)\n", major_version, major_version); printf("minor ver: 0x%02X (%d)\n", minor_version, minor_version); printf("access flags: 0x%04X (%d)\n", access_flags, access_flags); printf("class name: %s\n", get_cp_this_class()); printf("super name: %s\n", get_cp_super_class()); printf("\n"); printf("cp count: %d\n", cp_count); print_cp(); printf("\n"); printf("fields count: %d\n", fields_count); printField(); printf("\n"); printf("methods count: %d\n", methods_count); printMethod(); }
static void printObject_r(object* obj, int flags, int level) { int i; for (i = 0; i < level; i++) printf(" "); if (obj == 0) printf("(null)\n"); else { printf("%s\n", obj->name); if (flags&SCRIPT_PRINT_METHODS) { for (i = 0; i < obj->method_count; i++) { printMethod(obj, i, level + 1); } } if (flags&SCRIPT_PRINT_CHILDREN) { for (i = 0; i < obj->children.used; i++) { printObject_r(obj->children.data[i], flags, level + 1); } } } }
void test2() { printMethod(TEST_FUNC); TEST_ASSERT(eq(2, 4/2)); }
void test1() { printMethod(TEST_FUNC); TEST_ASSERT(eq(2, 9/3)); }
void test2() { printMethod(TEST_FUNC); TEST_ASSERT(false); }
void test1() { printMethod(TEST_FUNC); TEST_ASSERT(eq(1, 2)); }
void ASTPrint( int lev, ASTNode node ) { if (! node) { indent( lev ); ec_stderr_printf( "NULL" ); return; } /* Simplify our lives ... */ if (currentScope) { if (currentScope->type == PackageScope) { currentPackage = currentScope->target; currentBytecode = EC_PACKAGECODE(currentScope->target); } else { currentBytecode = currentScope->target; } currentLiteral = EC_COMPILEDLFRAME(currentBytecode); } switch ( node->type ) { case nullType: indent( lev ); ec_stderr_printf( "<nullType>" ); break; case symbolType: printSymbol( lev, node ); break; case qualifiedSymbolType: printQualifiedSymbol( lev, node ); break; case constExprType: printConstant( lev, node ); break; case variableExprType: printVariable( lev, node ); break; case arrayConstructionExprType: printArrayCons( lev, node ); break; case hashConstructionExprType: printHashCons( lev, node ); break; case unaryExprType: printUnary( lev, node ); break; case binaryExprType: printBinary( lev, node ); break; case conditionalExprType: printConditional( lev, node ); break; case orExprType: printOr( lev, node ); break; case andExprType: printAnd( lev, node ); break; case assignExprType: printAssign( lev, node ); break; case simAssignExprType: printSimAssign( lev, node ); break; case arrayRefExprType: printArrayRef( lev, node ); break; case declNodeType: printDecl( lev, node ); break; case declAtomNodeType: printDeclAtom( lev, node ); break; case statementType: printStatement( lev, node ); break; case labeledStmtType: printLabeledStmt( lev, node ); break; case exprStmtType: printExprStmt( lev, node ); break; case ifStmtType: printIf( lev, node ); break; case whileStmtType: printWhile( lev, node ); break; case doStmtType: printDo( lev, node ); break; case forStmtType: printFor( lev, node ); break; case forInStmtType: printForIn( lev, node ); break; case breakStmtType: printBreak( lev, node ); break; case continueStmtType: printContinue( lev, node ); break; case gotoStmtType: printGoto( lev, node ); break; case tryStmtType: printTry( lev, node ); break; case catchStmtType: printCatch( lev, node ); break; case throwStmtType: printThrow( lev, node ); break; case importStmtType: printImport( lev, node ); break; case paramNodeType: printParam( lev, node ); break; case paramListType: printParamList( lev, node ); break; case callNodeType: printCall( lev, node ); break; case methodCallNodeType: printMethodCall( lev, node ); break; case stmtListType: printStmtList( lev, node ); break; case funcNodeType: printFunction( lev, node ); break; case returnNodeType: printReturn( lev, node ); break; case classNodeType: printClass( lev, node ); break; case methodNodeType: printMethod( lev, node ); break; case packageNodeType: printPackage( lev, node ); break; } }