Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "rose.h"
- #include "metaObject.h"
- #include "createMetaObjectTraversal.h"
- #include "userDefinedMetaObjects.h"
- #include "metaClassNameContainer.h"
- using namespace std;
- using namespace SageInterface;
- using namespace SageBuilder;
- using namespace OpenFoo;
- //the principle to follow: make the template as simple as possible and the base code as reusable as possible.
- //the order of the metaClasses registered should be maintained in a logical order.
- //step 1: create a vector containing all metaObject classes generated
- //step 2: invoke all these classes seqentially and call corresponding member functions.
- int main(int argc, char* argv[])
- {
- SgProject *project = frontend (argc, argv);
- #if 1
- printf ("Generate the dot output of the SAGE III AST \n");
- generateDOT ( *project );
- printf ("DONE: Generate the dot output of the SAGE III AST \n");
- #endif
- std::cout <<"After building AST"<<endl;
- MetaObjectFactory factory;
- factory.registerMetaObject(new MetaClassFunction());
- factory.registerMetaObject(new MetaClassModule());
- factory.registerMetaObject(new MetaClassStruct());
- CreateMetaObjectTraversal* ptreeTraversal = new Fortran_CreateMetaObjectTraversal();
- ptreeTraversal->traverseInputFiles(project, preorder);
- factory.invokeMetaObjects(ptreeTraversal);
- AstTests::runAllTests(project);
- backend (project);
- if(ptreeTraversal) delete ptreeTraversal;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement