| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 
 | 
//...
%token <chaine> APTYPE POSES TSTEP CYCLELENGTH RESTINTERVAL VARMAXMAX NUMES NUMAPS STIMDURATION STIMVALUE STEPSIZE STEPMIN STEPMAX STATESIZE RELTOL ABSTOL
// les 6 derniers paramètres ont été rajoutés
//...
%%
//regle principale, qui sera executee quand tout le fichier aura ete parcouru
fichier:
PARAMSIMUL parametres CONSTANTES constantes 
DEFPOTENTIEL DIFFV expr MAXIMAV IDENTIFICATEUR nombre  MINIMAV IDENTIFICATEUR nombre IDENTIFICATEUR expr   
canal NOMFICHIERSORTIE IDENTIFICATEUR FREQUENCE NOMBRE LISTE listeEcriture EOF { 
	try {//...
if(*$14 != "Itotal") throw ExceptionGramm ("Veuillez donner l'expression de Itotal dans la section definition de V et Itotal");
		Table* tbv=new  Table();
		tbv->SetSymbole("V",$4->GetValeur("V"));
		Table* tbi=new  Table();
		tbi->SetSymbole("Itotal",0);
		$4->Ajoute($2);/* C'est cette instruction qui provoque l'erreur de segmentation quand on rajoute des paramètres*/
	Simulateur*  sim= new Simulateur($4,new ExprDiff((string)"V",new Tree($7),tbv),new ExprPol((string)"Itotal", new Tree($15),tbi),$16,*$18,*$22,$20);		
	}
	catch(ExceptionGramm e){//...
}
//...
parametres :
APTYPE		nombre 
POSES		 nombre   
CYCLELENGTH        nombre   
RESTINTERVAL	 nombre  
VARMAXMAX          nombre  
NUMES		 nombre  
NUMAPS		 nombre  
STIMDURATION     nombre 
STIMVALUE		nombre
STEPSIZE		nombre
STEPMIN		nombre
STEPMAX		nombre
STATESIZE		nombre
RELTOL		nombre
ABSTOL		nombre
{	$$  =new Table();
	$$->SetSymbole(*$1, $2);
	$$->SetSymbole(*$3, $4);
	$$->SetSymbole(*$5, $6);
	$$->SetSymbole(*$7, $8);
	$$->SetSymbole(*$9, $10);
	$$->SetSymbole(*$11, $12);
	$$->SetSymbole(*$13, $14);
	$$->SetSymbole(*$15, $16);
	$$->SetSymbole(*$17, $18);
	$$->SetSymbole(*$19, $20);
	$$->SetSymbole(*$21, $22);
	$$->SetSymbole(*$23, $24);
	$$->SetSymbole(*$25, $26);
	$$->SetSymbole(*$27, $28);
	$$->SetSymbole(*$29, $30);
      //Les fonctions de 19 à 30 servent à remplir une table avec les nouveaux paramètres
	
//...
	
	FILE * p= e.ouvrir("parametres.h");
	e.ecrire_entete(p,"fichier de definition des parametres du simulateur ");
	e.ecrire_const(p, *$1,$2);
	e.ecrire_const(p, *$3,$4);
	e.ecrire_const(p, *$5,$6);
	e.ecrire_const(p, *$7,$8);
	e.ecrire_const(p, *$9,$10);
	e.ecrire_const(p, *$11,$12);
	e.ecrire_const(p, *$13,$14);
	e.ecrire_const(p, *$15,$16);
	e.ecrire_const(p, *$17,$18);
	e.ecrire_const(p, *$19,$20);
	e.ecrire_const(p, *$21,$22);
	e.ecrire_const(p, *$23,$24);
	e.ecrire_const(p, *$25,$26);
	e.ecrire_const(p, *$27,$28);
	e.ecrire_const(p, *$29,$30);
	//Les fonctions de 19 à 30 servent à écrire les nouveaux paramètres dans le fichier parametres.h
	e.fermer(p);
}
//... | 
Partager