Programmer l'analyse lexicale
Résolu
Ouldmeamina
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Ouldmeamina Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Ouldmeamina Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Aidé moi stp
Programmer l'analyse lexicale du langage prolog en utilisant le langage de programmation c++
de créer des fichier contenant des exemple de programme écrits en prolog .
Le code source de l'analyse.
Mais mon code ne marché pas bien j'ai un problèmes au niveau des boucle
Programmer l'analyse lexicale du langage prolog en utilisant le langage de programmation c++
de créer des fichier contenant des exemple de programme écrits en prolog .
Le code source de l'analyse.
#include<stdio.h> #include<stdlib.h> #include<cstdio> #include<iostream> int main (){ FILE *fichier = NULL; char x; char text[21]; int i=0,j=0,n=0,m=0; char predicat[20]; char id1[20]; char id2[20]; char sep1,sep2,sep3,sep4; int etat=1; fichier=fopen("prog.txt","r"); if (fichier==NULL){ printf ("ERRREUR"); }else { fgets(text,sizeof text , fichier); printf ("En lecture\n"); printf ("%s\n",text); } for (i=0;i<sizeof(text);i++){ x=text[i]; if (text[i]=='.'){ etat=5; } else if(text[i]=='('){ etat=2; } else if(text[i]==','){ etat=3; } else if(text[i]==')'){ etat=4; } else { if (etat==1){ predicat[j]=predicat[j]+text[i]; j++; } else if(etat==2){ id1[n]=id1[n]+text[i]; n++; } else if(etat==3){ id2[m]=id2[m]+text[i]; m++; } } } printf ("\nLe predicat est : "); for (i=0;i<sizeof(predicat);i++) printf ("%c",predicat[i]); printf ("\nL'identificateur 1 est : "); for (i=0;i<sizeof(predicat);i++) printf ("%c",id1[i]); printf ("\nL'identificateur 2 est : "); for (i=0;i<sizeof(predicat);i++) printf ("%c",id2[i]); printf ("\n");
Mais mon code ne marché pas bien j'ai un problèmes au niveau des boucle
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Programmer l'analyse lexicale
- Analyse composant pc - Guide
- Analyse performance pc - Guide
- Programmer sms - Guide
- Analyse disque dur - Télécharger - Informations & Diagnostic
- Programmer mail gmail - Guide
1 réponse
Bonjour,
Ce code est du C pas du C++! C'est même du C de très bas niveau!
Quand tu fais predicat[j]=predicat[j]+text[i]; (en C ou en C++), que penses-tu faire?
predicat étant non initialisé, tu dis que la j-ième lettre est un nombre aléatoire auquel tu ajoutes le caractère lu.
Un correctif (en langage C) pourrait-être
En C++, il existe des possibilités beaucoup plus simples. predicat étant alors un std::string et surtout pas un tableau de char.
Ce code est du C pas du C++! C'est même du C de très bas niveau!
Quand tu fais predicat[j]=predicat[j]+text[i]; (en C ou en C++), que penses-tu faire?
predicat étant non initialisé, tu dis que la j-ième lettre est un nombre aléatoire auquel tu ajoutes le caractère lu.
Un correctif (en langage C) pourrait-être
predicat[j]=text[i]; predicat[++j] = '\0'; // et terminer la chaîne
En C++, il existe des possibilités beaucoup plus simples. predicat étant alors un std::string et surtout pas un tableau de char.
predicat[++j] = '\0'; // et terminer la chaîne mais en exécution j'ai que des symbole indéfini aide moi stp