Programme en C
itachi070
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
itachi070 -
itachi070 -
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.
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.
A voir également:
- Programme en C
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
mais j'étais vraiment dans une contrainte de temps. c'est pour cette raison que j'ai fait ceci
Par contre il serait bien que vous y mettiez un peu de vous et affichiez ce que vous avez déjà entrepris...
#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();
}