int main( int argc, char* argv[] ) { FILE* fp; if( argc < 2 ) { fprintf( stderr, "Usage: %s <source.p> [...]\n", *argv ); return EXIT_FAILURE; } for( int i = 1; i < argc; ++i ) { printf( "Parsing `%s'\n", argv[i] ); if( !(fp = fopen( argv[i], "r" )) ) { perror( "fopen" ); continue; } LexAnalyzer lexan( fp ); Parser parser( lexan ); AstNode* ast; if( !parser.parse( ast ) ) { printf( "Failed to parse file `%s'\n", argv[i] ); continue; } printf( "File `%s' parsed successfully\n", argv[i] ); #ifdef DEBUG_AST ast->print( 1, stdout ); #endif /* DEBUG_AST */ if( !ast->translate() ) { printf( "Failed to translate file `%s'\n", argv[i] ); delete ast; continue; } printf( "File `%s' translated successfully\n", argv[i] ); delete ast; } }