//======================================================================================== // R1233 subroutine-subprogram //---------------------------------------------------------------------------------------- void UntypedASTBuilder::build_SubroutineSubprogram(SubroutineSubprogram * subroutineSubprogram) { Sg_File_Info * start = NULL; SgUntypedNamedStatement * stmt = NULL; SgUntypedDeclarationList* sgDeclList = NULL; SgUntypedStatementList* sgStmtList = NULL; SgUntypedSubroutineDeclaration * subroutine = NULL; // SubroutineStmt // if (subroutineSubprogram->getSubroutineStmt()) { subroutine = dynamic_cast<SgUntypedSubroutineDeclaration*>(subroutineSubprogram->getSubroutineStmt()->getPayload()); assert(subroutine); } printf("build_MainSubroutine label: ........ %s\n", subroutine->get_label_string().c_str()); printf(" begin name: ........... %s\n", subroutine->get_name().c_str()); // SpecificationPart // SpecificationPart * specPart = subroutineSubprogram->getSpecificationPart(); sgDeclList = dynamic_cast<SgUntypedDeclarationList*>(specPart->givePayload()); assert(sgDeclList); subroutine->get_scope()->set_declaration_list(sgDeclList); printf(" spec_list_size: ........... %lu\n", sgDeclList->get_decl_list().size()); // ExecutionPart // ExecutionPart * execPart = subroutineSubprogram->getExecutionPart(); sgStmtList = dynamic_cast<SgUntypedStatementList*>(execPart->givePayload()); assert(sgStmtList); subroutine->get_scope()->set_statement_list(sgStmtList); printf(" exec_list_size: ........... %lu\n", sgStmtList->get_stmt_list().size()); // InternalSubprogramPart // InternalSubprogramPart * isubPart = subroutineSubprogram->getInternalSubprogramPart(); if (isubPart) { SgUntypedFunctionDeclarationList* sgFuncList; sgFuncList = dynamic_cast<SgUntypedFunctionDeclarationList*>(isubPart->givePayload()); assert(sgFuncList); subroutine->get_scope()->set_function_list(sgFuncList); } // EndSubroutineStmt // stmt = dynamic_cast<SgUntypedNamedStatement*>(subroutineSubprogram->getEndSubroutineStmt()->getPayload()); assert(stmt); subroutine->set_end_statement(stmt); printf(" end label: ........... %s\n", stmt->get_label_string().c_str()); printf(" end name: ........... %s\n", stmt->get_statement_name().c_str()); subroutineSubprogram->setPayload(subroutine); }
//======================================================================================== // R1101 main-program //---------------------------------------------------------------------------------------- void UntypedASTBuilder::build_MainProgram(MainProgram * mainProgram) { Sg_File_Info * start = NULL; SgUntypedNamedStatement * stmt = NULL; SgUntypedDeclarationList* sgDeclList = NULL; SgUntypedStatementList* sgStmtList = NULL; SgUntypedProgramHeaderDeclaration * program = NULL; // ProgramStmt // if (mainProgram->getProgramStmt()) { program = dynamic_cast<SgUntypedProgramHeaderDeclaration*>(mainProgram->getProgramStmt()->getPayload()); assert(program); } else { // no optional ProgramStmt SgUntypedFunctionScope * scope = new SgUntypedFunctionScope(NULL); scope->set_declaration_list(new SgUntypedDeclarationList(NULL)); scope->set_statement_list(new SgUntypedStatementList(NULL)); scope->set_function_list(new SgUntypedFunctionDeclarationList(NULL)); program = new SgUntypedProgramHeaderDeclaration(NULL, ""); program->set_statement_enum(SgToken::FORTRAN_PROGRAM); program->set_scope(scope); } printf("build_MainProgram label: ........... %s\n", program->get_label_string().c_str()); printf(" begin name: ........... %s\n", program->get_name().c_str()); // SpecificationPart // SpecificationPart * specPart = mainProgram->getSpecificationPart(); sgDeclList = dynamic_cast<SgUntypedDeclarationList*>(specPart->givePayload()); assert(sgDeclList); program->get_scope()->set_declaration_list(sgDeclList); printf(" spec_list_size: ........... %lu\n", sgDeclList->get_decl_list().size()); // ExecutionPart // ExecutionPart * execPart = mainProgram->getExecutionPart(); sgStmtList = dynamic_cast<SgUntypedStatementList*>(execPart->givePayload()); assert(sgStmtList); program->get_scope()->set_statement_list(sgStmtList); printf(" exec_list_size: ........... %lu\n", sgStmtList->get_stmt_list().size()); // InternalSubprogramPart // InternalSubprogramPart * isubPart = mainProgram->getInternalSubprogramPart(); if (isubPart) { SgUntypedFunctionDeclarationList* sgFuncList; sgFuncList = dynamic_cast<SgUntypedFunctionDeclarationList*>(isubPart->givePayload()); assert(sgFuncList); program->get_scope()->set_function_list(sgFuncList); } // EndProgramStmt // stmt = dynamic_cast<SgUntypedNamedStatement*>(mainProgram->getEndProgramStmt()->getPayload()); assert(stmt); program->set_end_statement(stmt); printf(" end label: ........... %s\n", stmt->get_label_string().c_str()); printf(" end name: ........... %s\n", stmt->get_statement_name().c_str()); mainProgram->setPayload(program); }
//======================================================================================== // R1104 module //---------------------------------------------------------------------------------------- void UntypedASTBuilder::build_Module(Module* module) { #if 0 Sg_File_Info * start = NULL; SgUntypedNamedStatement * endStmt = NULL; SgUntypedDeclarationList * sgDeclList = NULL; SgUntypedModuleDeclaration * sgModule = NULL; // ModuleStmt // sgModule = dynamic_cast<SgUntypedModuleDeclaration*>(module->getModuleStmt()->getPayload()); assert(sgModule); start = sgModule->get_startOfConstruct(); sgModule->set_scope(new SgUntypedModuleScope(start)); #if UNPARSER_AVAILABLE sgModule->set_has_unparse(true); #endif #ifdef OFP_BUILD_DEBUG printf("build_Module label: ................ %s\n", sgModule->get_label_string().c_str()); #if 0 // DQ (9/10/2014): Need to add name data member for SgUntypedModuleDeclaration. printf(" begin name: ........... %s\n", sgModule->get_name().c_str()); #endif #endif // SpecificationPart // SpecificationPart * specPart = module->getSpecificationPart(); sgDeclList = dynamic_cast<SgUntypedDeclarationList*>(specPart->givePayload()); assert(sgDeclList); sgModule->get_scope()->set_declaration_list(sgDeclList); #ifdef OFP_BUILD_DEBUG printf(" spec_list_size: ........... %lu\n", sgDeclList->get_decl_list().size()); #endif // ModuleSubprogramPart // ModuleSubprogramPart * msubPart = module->getModuleSubprogramPart(); if (msubPart) { SgUntypedScope * msubScope = dynamic_cast<SgUntypedScope*>(msubPart->givePayload()); assert(msubScope); sgModule->get_scope()->set_statement_list(msubScope->get_statement_list()); sgModule->get_scope()->set_function_list (msubScope->get_function_list()); } else { sgModule->get_scope()->set_statement_list(new SgUntypedStatementList(NULL)); sgModule->get_scope()->set_function_list (new SgUntypedFunctionDeclarationList(NULL)); } // EndModuleStmt // endStmt = dynamic_cast<SgUntypedNamedStatement*>(module->getEndModuleStmt()->getPayload()); assert(endStmt); sgModule->set_end_statement(endStmt); #ifdef OFP_BUILD_DEBUG printf(" end label: ........... %s\n", endStmt->get_label_string().c_str()); printf(" end name: ........... %s\n", endStmt->get_statement_name().c_str()); #endif module->setPayload(sgModule); #endif }