Posez votre question Signaler

Un simple compilateur pascal(analyse lexical? [Résolu]

esmi - Dernière réponse le 18 janv. 2011 à 14:20
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
Lire la suite 
Réponse
+14
moins plus
slimandalila- 22 janv. 2009 à 15:10
un analyseur syntaxique ecrit en pascal
Répondre
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+7
moins plus
comment construire un compilateur pascal en langage 'c'? svp
Ajouter un commentaire
Annonces
 
moins plus
Réponse
+5
moins plus
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);

}
}
}
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
donnez un compilateur lexical et synyaxique en pascal
matilda- 29 nov. 2009 à 21:54
un simple compilateur pascal(analyse lexical et analyse syntaxique en pascal
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
commont télécharger un mini compilateur c
Ajouter un commentaire
Réponse
+0
moins plus
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
nadiagrira- 7 mars 2008 à 13:09
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
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Ajouter un commentaire
Ce document intitulé «  un simple compilateur pascal(analyse lexical?  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.