void main(int argc, char* argv[]) { Lexer* lexer = new Lexer(argc, argv); Parser* parser = new Parser(lexer); char* mytemp; SymbolTable* symtable; char* output_target = DEFAULT_OUTPUT_TARGET; Machine* platform; if(lexer->getInputStruct()) { int success = parser->parse(); int sem_success; if(success) { if(PARSER_MESSAGE) cout<<"Parsing: success"<<endl; symtable = new SymbolTable(); RegisterBank* regbank = new RegisterBank(DEFAULT_REGISTERS, NUMBER_OF_DEFAULT_REGISTERS, LOCAL); regbank->setGlobalPointer(new Register(GLOBAL_POINTER, GLOBAL,GLOBAL_POINTER_ADDR)); regbank->setStackPointer(new Register(STACK_POINTER, STACK,STACK_POINTER_ADDR)); regbank->setFramePointer(new Register(FRAME_POINTER, FRAME,FRAME_POINTER_ADDR)); RegisterBank* outputregs = new RegisterBank(OUTPUT_REGISTERS, NUMBER_OF_OUTPUT_REGISTERS, OUTPUT); RegisterBank* inputregs = new RegisterBank(INPUT_REGISTERS, NUMBER_OF_INPUT_REGISTERS, INPUT); platform = new Sparc(regbank,outputregs,inputregs); Machine::setCurrentMachine(platform); codegen = new CodeGenerator(platform, output_target); platform->setOutput(codegen->getOutputStream()); codegen->beginCodeGen(); semchecker = new SemanticChecker(symtable, ASTree, codegen); sem_success = semchecker->check(); codegen->endCodeGen(); } else if(PARSER_MESSAGE) cout<<"Parsing: failure"<<endl; if(sem_success && SEMANTIC_MESSAGE) cout<<"Semantic success."<<endl; else cout<<"Semantic failure."<<endl; } delete lexer; delete parser; }