示例#1
0
/* Logging function. */
void printProcess(Process process, FILE *f) {
    printAutomata(process->automata, f) ;
    fprintf(f,"\n## PROCESS ##\n") ;
    fprintf(f,"(nbproc,gridHeight,gridWidth): (%d\t,%d\t,%d)\n",process->nbproc,process->gridHeight,process->gridWidth) ;
    fprintf(f,"(myid,myrow,mycol):            (%d\t,%d\t,%d)\n",process->myid,process->myrow,process->mycol) ;
    fprintf(f,"(left,right,up,down):          (%d\t,%d\t,%d\t,%d)\n",process->left,process->right,process->up,process->down) ;
}
示例#2
0
void grammarToAutomata(){
	printf("\nTesting Grammar to Automata Conversion ");
	printGrammar(g1);
	formalize(g1);
	printf("\nFormalized");
	printGrammar(g1);
	AutomataADT a = toAutomata(g1);
	printAutomata(a);
	printf("productions quant: %d\n", getQuant(getProductions(g1)));
}
示例#3
0
void grammar4Test(){
	//Gramatica4 = ({S, B, C}, {a,b,c}, S,
	//{S->B | a,
	//B->cS | \,
	//C->bC | \})

	GrammarADT grammar4 = newGrammar();
	grammar4 = newGrammar();
	setDistinguished(grammar4, 'S');
	char * nonterminals1 = malloc(sizeof(char)*3);
	nonterminals1[0] = 'S';
	nonterminals1[1] = 'B';
	nonterminals1[2] = 'C';
	setNonTerminals(grammar4,nonterminals1,3);
	char * term1 = malloc(sizeof(char)*3);
	term1[0] = 'a';
	term1[1] = 'b';
	term1[2] = 'c';
	setTerminals(grammar4,term1,3);

	ProductionADT prod1 = newProduction('S',LAMDA,'B');
	ProductionADT prod2 = newProduction('S','a',LAMDA);
	ProductionADT prod3 = newProduction('B','c','S');
	ProductionADT prod4 = newProduction('B',LAMDA, LAMDA);
	ProductionADT prod5 = newProduction('C', 'b', 'C');
	ProductionADT prod6 = newProduction('C',LAMDA, LAMDA);
	//ProductionsADT productions1 = newProductions(0);

	ProductionsADT productions1 = newProductions(6);
	setProduction(productions1,0,prod1);
	setProduction(productions1,1,prod2);
	setProduction(productions1,2,prod3);
	setProduction(productions1,3,prod4);
	setProduction(productions1,4,prod5);
	setProduction(productions1,5,prod6);

	/*addProduction(productions1,prod1);
	addProduction(productions1,prod2);
	addProduction(productions1,prod3);
	addProduction(productions1,prod4);*/

	setProductions(grammar4,productions1);


	printf("Before Nomalization\n");
	printGrammar(grammar4);
	/*Conversion*/
	AutomataADT automata1 = toAutomata(grammar4);
	printf("After Nomalization\n");
	printGrammar(grammar4);
	printAutomata(automata1);

}
示例#4
0
void grammar1Test(){
	//G1 = ({A, B, C}, {a, b, c},A, {A -> aB|c, B -> aA|b})

	/*Initialization*/
	GrammarADT grammar1 = newGrammar();
	grammar1 = newGrammar();
	setDistinguished(grammar1, 'A');
	char * nonterminals1 = malloc(sizeof(char)*3);
	nonterminals1[0] = 'A';
	nonterminals1[1] = 'B';
	nonterminals1[2] = 'C';
	setNonTerminals(grammar1,nonterminals1,3);
	char * term1 = malloc(sizeof(char)*3);
	term1[0] = 'a';
	term1[1] = 'b';
	term1[2] = 'c';
	setTerminals(grammar1,term1,3);

	ProductionADT prod1 = newProduction('A','a','B');
	ProductionADT prod2 = newProduction('A','c',LAMDA);
	ProductionADT prod3 = newProduction('B','a','A');
	ProductionADT prod4 = newProduction('B',LAMDA,'b');
	//ProductionsADT productions1 = newProductions(0);

	ProductionsADT productions1 = newProductions(4);
	setProduction(productions1,0,prod1);
	setProduction(productions1,1,prod2);
	setProduction(productions1,2,prod3);
	setProduction(productions1,3,prod4);


	/*addProduction(productions1,prod1);
	addProduction(productions1,prod2);
	addProduction(productions1,prod3);
	addProduction(productions1,prod4);*/

	setProductions(grammar1,productions1);

	printf("Before Nomalization\n");
	printGrammar(grammar1);
	/*Conversion*/
	AutomataADT automata1 = toAutomata(grammar1);
	printf("After Nomalization\n");
	printGrammar(grammar1);
	printAutomata(automata1);


}