Esempio n. 1
0
int main(int argc, char** argv){
	int opt;
	int r;
	AST_Class modelica_class;
	
	while((opt = getopt(argc, argv, "d:")) != -1){
		switch(opt){
			case 'd':
				if(optarg != NULL && isDebugParam(optarg)){
					debugInit(optarg);		
				}else{
					ERROR("Command line option d requires an argument\n");
				}
				break;
		}		
	}
	
	if(optind < argc){
		modelica_class = parseClass(argv[optind],&r);
	}else{ 
		/* si no se especifico un archivo leo de stdin*/
		modelica_class = parseClass("", &r);	
	}
	if(r!=0){
		return -1;
	}
	
	/* creamos la clase MicroModelica */
	TypeSymbolTable ty = newTypeSymbolTable();
	MMO_Class mmo_class = newMMO_Class(modelica_class, ty); 

	ReducedGraphBuilder *gb = new ReducedGraphBuilder(mmo_class);
	CausalizationGraph g = gb->makeGraph();

	//para debuggeo: crea archivo grafo.dot 
	if(debugIsEnabled('g')){
		GraphPrinter gp(g);
		gp.printGraph();
	}

	CausalizationStrategy2 *cs = new CausalizationStrategy2(g);
	if(cs->causalize()){
		if(debugIsEnabled('c')){
			cout << "Result of causalization (variable, [range,] equationID):" << endl;
			cs->print();
		}
	}else{
		//si no anduvo, probamos con la estrategia clasica
		DEBUG('c', "Executing the classic strategy\n");
		CausalizationStrategy *cs_clasica = new CausalizationStrategy(mmo_class);
		AST_ClassList cl = newAST_ClassList();
		cs_clasica->causalize(mmo_class->name(), cl);
  		DEBUG('c', "Causalized Equations:\n");
  		MMO_EquationList causalEqs = mmo_class->getEquations();
  		MMO_EquationListIterator causalEqsIter;
  		foreach(causalEqsIter, causalEqs) {
    		DEBUG('c', "%s", current_element(causalEqsIter)->print().c_str());
  		}
	}
Esempio n. 2
0
AST_Class_::AST_Class_ (AST_String n, AST_Composition comp) :
    _name (n), _composition (comp), _father (NULL), _basic (false), _encapsulated (
	false), _final (false), _prefix ()
{
  _extends_list = newAST_StringList ();
  _sub_classes = newAST_ClassList ();
  _components = newAST_Element_ComponentList ();
}