Analyseur syntaxique en c

svenja Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
0beron Messages postés 76 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   56
 
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