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 -
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;
}
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:
- Analyseur syntaxique en c
- Analyseur de spectre audio - Télécharger - Création musicale
- Analyseur performance pc - Guide
- Analyseur disque dur - Télécharger - Informations & Diagnostic
- Analyseur de spectre logiciel - Télécharger - Édition & Montage
- Analyseur de voix télécharger - Télécharger - Audio & Musique