Analyseur syntaxique en c

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;

}

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. 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?