Implémente un automate qui reconnu les identificateur de langage C




                                       Objectif 






  L'objectif de cette  article est implémente un automate en langage C qui permit de reconnu les identificateur a partir d'fichier et affiche les erreurs et leurs emplacement. 

Alors on va crée le automate

tell que 
R1={A......Z,a........z,_}et R2={0..........9}

automate qui reconnu les identificateur de langage c
voila le fichier qui content les identificateur,qui sont si-pare par {;}.
nom de fichier est date.txt
fichier de identificateur
Télécharge ici

Code source de programme:
 ///Author: Karara Mohamed  @   tutodev1.blogspot.com/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include<string.h>
#define maX 256

int TR[2][maX];
FILE *tamp;

void remplireAutomate(){
int i,j;
    for(i=0;i<2;i++){
        for(j=0;j<255;j++){
            TR[i][j]=-1;
        }
    }




///pour a ....z
for(j=0;j<2;j++){
    for(i=97;i<=122;i++){
        TR[j][i]=1;
    }}
///pour A .......Z
for(j=0;j<2;j++){
    for(i=65;i<=90;i++){
        TR[j][i]=1;
    }}
///pour 0 ...........9
for(i=48;i<=57;i++){
    TR[1][i]=1;
    }
///pour _
TR[1][95]=1;
}
///AUTOMATE
int AFD(char *TM,int ptdeb,int ptfin) {
    int e=0,r;
    char s=TM[ptdeb];
    while((TR[e][(int)(s)]!=-1)&&(ptdeb<ptfin-1)){
    r=(int)(s);
    e=TR[e][r];
    ptdeb++;
    s=TM[ptdeb];
    }
     r=(int)(s);
    e=TR[e][r];
    if((e==1)){return 1;}
return 0;
}


void verification(char *m,int l){
    int ptdeb=0,ptfin=0,j,i,n=strlen(m);
    for( ptfin=0; ptfin<n;ptfin++){
                      if(m[ptfin]==';'){
                          if(AFD(m,ptdeb,ptfin)==1){
                              printf("<<");for(i=ptdeb;i<ptfin;i++){printf("%c",m[i]);} puts(">>");printf(" identificateur reconnu\n");}
                      else {    printf("<<");for(i=ptdeb;i<ptfin;i++){printf("%c",m[i]);}puts(">>"); printf(" identificateur non roconnu dans la line %d\n",l);}

                                 ptfin++;ptdeb=ptfin;
                                   }

                           }
}

///charger le fichier
void charger(char *m){
    int i=1;
    tamp=fopen("data.txt","r");
   while ( (fgets(m, 250, tamp))!= NULL){
  verification(m,i);///verification identificateur par identificateur
  i++;///nombre de lines
    }
}

int main()
{
    char TM[maX];
    remplireAutomate();

   int  choix;
    do {        system("cls");

         printf("\t\t\t================MENU================\n\n");
         printf("\t\t\t1-lire les identificateur dans le fichier\n");
         printf("\t\t\t2-QUIT\n");
         printf("\t\t\t");
         scanf("%d",&choix);
         switch(choix){
         case 1:system("cls");charger(TM);system("pause>null");break;
         case 2:system("cls"); printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tBYEEEEEEEEEE\n\n\n\n"); system("pause>null");break;
         default:
             system("cls");
            printf("\t\t\t Erreur de choix !!!!!!!!!!!!!!!!!! \n");
            Sleep(1500); system("cls");

                        }
        }while(choix!=2);
    return 0;
}

  
POUR TÉLÉCHARGE LE CODE SOURCE 

automate telecharge