Un simple compilateur pascal(analyse lexical?

Résolu
esmi -  
 mouhng02 -
Bonjour,
es que pouvez vous m'aidé pour construire un compilateur pascal avec l'environnement
"Borland Builder c++(6)"?
ce compilateur doit faire l'analyse lexicale du:
PROGRAM , BEGIN ,VAR ,INTEGER , WRITE ,READ ,IF ,THEN ,FOR.
j'ai déja construit un automate a état fini qui reconnais chaque mot
et la je doix recombiner tous les AEF dans un seul qui reconnait tout le programme
je sais qu'il faut utiliser le swtch et les case pour chaque etat mais je sais pas exactement comment ?
j'attend l'aide de vous svp
merci
Configuration: Windows XP
Internet Explorer 7.0

9 réponses

  1. en java
     
    un program d'un analyse lexical
    14
    1. slimandalila
       
      un analyseur syntaxique ecrit en pascal
      0
  2. kab_mina Messages postés 1 Statut Membre 7
     
    comment construire un compilateur pascal en langage 'c'? svp
    7
  3. l.r123GO IN
     
    je vous donne un debut , pour votre compilateur pascal p
    int alpha(char c)
    {
    if(((c>='a') &&(c<='z'))||((c>='A')&&(c<='Z')))
    return(1);
    else
    return(0);
    }

    /***************************est_num******************************************/
    int num(char c)
    {
    if((c>='0')&&(c<='9'))
    return(1);
    else
    return(0);
    }
    /*****************************init_motcle***********************************/
    void initmc()
    {
    Motcle[0]="program";
    Motcle[1]="procedure";
    Motcle[2]="begin";
    Motcle[3]="end";
    Motcle[4]= "type";
    Motcle[5]="var";
    Motcle[6]="char";
    Motcle[7]="integer";
    Motcle[8]="while";
    Motcle[9]="do";
    Motcle[10]="if";
    Motcle[11]="then";
    Motcle[12]="else";
    Motcle[13]="read";
    Motcle[14]="readln";
    Motcle[15]="write";
    Motcle[16]="writeln";

    }

    /*****************************exist*******************************/

    int exist()
    {
    TABLE **Q;
    if((*T)==NULL)
    {
    (*T)=(TABLE*) malloc(sizeof(TABLE));
    L=(TABLE*)malloc(sizeof(TABLE));
    L->entree=cdid;
    L->next=NULL;
    L->est_dcl=0;
    strcpy(L->lexeme,motlu);
    (*T)=L;
    symbole->est_declare=0;
    return(0);
    }
    else

    {
    (*Q)=(*T);
    while((*Q)!=NULL&&(strcmp(motlu,(*Q)->lexeme)))
    {
    printf("\n %s",(*Q)->lexeme);
    (*Q)=(*Q)->next;

    }
    if ((*Q)==NULL)
    {
    cdid++;
    L=(TABLE*)malloc(sizeof(TABLE));
    L->entree=cdid;
    strcpy(L->lexeme,motlu);
    L->next=(*T);
    L->est_dcl=0;
    (*T)=L;
    symbole->est_declare=0;
    return(cdid);
    }
    else
    {
    return((*Q)->entree);

    }
    }
    }
    6
  4. koufdell
     
    en étant sur que tin automate est fini et déterministe ,tu n'as qu'a
    lire une lettre de ton texte d'entrée
    se diriger vers l'etat correspodant (utilises une variable etat)
    une fois le lexeme reconnu , mets le dans ta table de symboles
    ton automate doit reconnaitre le lexeme le plus long
    apparement tu n'auras pas de problème , les mots sont tous différents les uns des autres
    PROGRAM , BEGIN ,VAR ,INTEGER , WRITE ,READ ,IF ,THEN ,FOR
    sinon
    Google est ton amis il y a des cours assez intéressents sur le net sachant que l'analyse lexicale est la plus facile
    il existe un livre que tout le monde cite comme étant une sorte de bible de compilation compilers:principles,techniques and tools
    il peut t'aider (en anglais)
    http://rapidshare.com/files/58730499/0321486811.zip
    2
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. fa5ri
     
    ecrire un programme qui permet de lire une chaine ch puis changer et afficher ch en mettant le premier mot de ch à la fin
    ex :pour ch"troisiéme scienses informatique
    2
  7. taleb
     
    donnez un compilateur lexical et synyaxique en pascal
    1
    1. matilda
       
      un simple compilateur pascal(analyse lexical et analyse syntaxique en pascal
      0
  8. mouhng02
     
    commont télécharger un mini compilateur c
    1
  9. esmi
     
    bonjour

    dans la partie d'analyse syntaxique j'ai réussi a trouver la grammaire correspondante a ce mini compilateur pascal et j'ai fais une analyse selon la methode acsendante SLR mais j'arrive pas a implémenter la table d'analyse ( j'ai aucune idée sur ça )
    veillez m'aidez svp
    0
    1. nadiagrira
       
      bjr, pourriez vs maider!!
      g un probleme avec ecrire
      ds ecrire j pe mettre nimorte koi com j pe metrre aussi des %d %f %e mais le nombre de % doit etre le mem ke des var exemple
      ecrire(" bonjour lfhnjkrfnjke %d jefbj %f kjbj%e kjbfj",var1,var2,var3);
      comment le resoudre lexicalement et syntaxiquement.
      merci mon mail est naida03@hotmail.com
      merci bien
      0