Analyseur syntaxique en c

Fermé
svenja Messages postés 1 Date d'inscription dimanche 13 février 2011 Statut Membre Dernière intervention 13 février 2011 - 13 févr. 2011 à 10:08
0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 - 15 févr. 2011 à 17:45
Bonjour,


je dois réaliser un analyseur syntaxique en c avec les piles
j'ai un petit soucis a l'appel de ma fonction empiler merci d'avance

#include <stdio.h>
#include <stdlib.h>

typedef struct cell{
char par;
struct cell *next;
}parenthese;

typedef parenthese *pile;

pile initialiser(){
return NULL;}

int estvide(pile p){
return p == NULL? 1:0;
}

pile empliler(pile oldpile, char val){
pile newcell;
newcell=(pile*)malloc(sizeof(pile));
newcell->par=val;
newcell->next=oldpile;
return newcell;
}

int depiler(pile *p,char *elt){
pile q;
if(estvide(*p) == 1)return 0;
q=*p;
*elt=(*p)->par;
*p=(*p)->next;
free(q);
return 1;
}

void viderpile(pile *p){
int q;
while(depiler(p,&q));
}

int analyseursyntaxique(char *chaine){
int i,analyseok;
pile p;
int q;
analyseok=1;i=0;
p=initialiser();
while(*(chaine+i) != '\0' && analyseok){
if(*(chaine +i)== '(') p=empiler(p,'(');//comment doit on appeler la fonction empiler
else if(*(chaine +i) == ')')
if(!depiler(p,&q)) analyseok=0;
i++;
}

if(analyseok && !estvide(p))
{
analyseok=0,viderpile(&p);
}
return analyseok;
}
int main(){
char chaine;
printf("votre chaine\n");
scanf("%s",&chaine);
analyseursyntaxique(chaine);
return 0;


}
A voir également:

1 réponse

0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
15 févr. 2011 à 17:45
Ce que tu as fait le semble bon, je suppose que les conditions '(' vont être remplacées par une variable de type char.
Peux tu préciser le problème que tu as?
0