1 2 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