Programme en C

Bonjour,
J'ai besion d'aide pour se programme
Compilateur d’instructions
Il s’agit de créer un compilateur d’instructions simplifié à l’aide d’un TDA pile.
Le principe du compilateur consiste à :
Parcourir l’instruction à compiler, caractère par caractère de gauche à droite.
Si le caractère rencontré est « ou ‘ ou ( ou { ou [ alors on l’empile
Si le caractère rencontré est » ou ’ou ) ou } ou] alors en dépile son correspondant de la pile.
Si ils sont correspondants on continu le parcours
Sinon on annonce une erreur
Exemple : printf ( « le ieme élément est :%d »,t[i) ;
Elément rencontré »

«
(
Alors dépiler un élément de la pile «
Vérifier correspondance
Ok

«
(

Elément rencontré )
Alors dépiler un élément de la pile [

[
(
Vérifier correspondance
Non conforme
Message d’erreur

Deux solutions doivent être réalisées : implémentation statistique et implémentation dynamique.
Le code source est stocké dans un fichier. La compilation s’arrête soit à la rencontre d’une erreur, soit lorsque la pile est vide ; dans ce cas de figure un message est affiché pour annoncer une compilation réussite.
Configuration: Windows Vista
Firefox 3.5.7

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    1. MERCI pour le conseil
      mais j'étais vraiment dans une contrainte de temps. c'est pour cette raison que j'ai fait ceci
    2. Modérateur
      @itachi070Le problème c'est que tu n'es pas tout seul et ils ont tous à peu près le même raisonnement ;-\
    3. @jipicyvous peuvez me guider pour ce travail?
    4. Modérateur
      @itachi070Moi, non, désolé, le C c'est pas mon truc ;-((

      Par contre il serait bien que vous y mettiez un peu de vous et affichiez ce que vous avez déjà entrepris...
    5. @jipicyc une partie que jé traiter

      #include<stdio.h>
      #include<string.h>
      #define Ncmax 100
      #define Ntmax 50

      /********** déclaration des procédures **********/

      void init (char T[Ntmax]);
      void saisie (char ch[Ncmax]);
      void empile (char T[Ntmax], char x);
      char depile (char T[Ntmax]);
      int fin (char T[Ntmax]);
      char correspondant(char x);

      /********* le programme principal ***********/

      void main()
      {
      char instruction[Ncmax];
      char y;
      int i;
      char T[Ntmax];
      saisie(instruction);
      printf ("\n Voici votre instruction:\n \t %s\n ",instruction);
      init (T);
      i=0;
      do
      {
      switch (instruction[i])
      {
      case ('('):{
      empile (T,instruction[i]);
      i++;
      }; break;
      case ('{'):{
      empile (T,instruction[i]);
      i++;
      }; break;
      case ('['):{
      empile (T,instruction[i]);
      i++;
      }; break;
      case (')'):{
      y=depile(T);
      if (correspondant(instruction[i])!=y)
      {
      printf ("Vous avez commis une erreur au niveau du caractere %i !\n",i);
      stop=1;
      }
      else i++;
      }; break;
      case ('}'):{
      y=depile(T);
      if (correspondant(instruction[i])!=y)
      {
      printf ("Vous avez commis une erreur au niveau du caractere %i !\n",i);
      stop=1;
      }
      else i++;
      }; break;
      case (']'): {
      y=depile(T);
      if (correspondant(instruction[i])!=y)
      {
      printf ("Vous avez commis une erreur au niveau du caractere %i !\n",i);
      stop=1;
      }
      else i++;
      }; break;
      default: i++;
      }
      }
      while ((i<=strlen(instruction))&&(stop==0));
      if (T[0]=='0')
      printf ("\n Compilation reussie!");
      getch();
      }