Compilation

Fermé
hichemkou22 Messages postés 2 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 22 avril 2008 - 22 avril 2008 à 23:41
EverDraft Messages postés 24 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 23 août 2008 - 23 avril 2008 à 02:41
Bonjour,
salut tout le monde, bon j'ai devloppé un analyseur syntaxique et un analyseur lexicale permettant de genere le progarme C correspondant a un algorithme donner
mnt je veu modifier ce code pour kil permet de créer un compilateur C
voici l'ancien code h.l:
%{
#include <stdio.h>
int numlig = 0;
int valeur;
char car;
char chaine[256];
%}
%%

(p|P)(o|O)(u|U)(r|R) {printf("for");return FOR;}
(s|S)(i|I) {printf("if");return IF;}
(a|A)(l|L)(o|O)(r|R)(s|S) {printf("goto");return GOTO;}
(e|E)(t|T) {printf("&&");return &&;}
(o|O)(u|U) {printf("||");return ||;}
(n|N)(o|O)(n|N) {printf("!");return !;}
(b|B)(o|O)(l|L)(e|E)(e|E)(n|N) {printf("bool");return BOOL;}
"+" {printf("+");yylval.car=yytext[0];return P;}
"-" {printf("-");yylval.car=yytext[0];return M;}
"*" {printf("*");yylval.car=yytext[0];return F;}
"/" {printf("/");yylval.car=yytext[0];return D;}
"<-" {printf("=");yylval.car=yytext[0];return AFF;}
"([a-zA-z_0-9])(+)(1)" {printf("++");yylval.car=yytext[0];return PPMM;}
"<" {printf("<");yylval.car=yytext[0];return INF;}
"=" {printf("==");yylval.car=yytext[0];return COMP;}
">" {printf(">");yylval.car=yytext[0];return SUP;}
"(" {printf("(");yylval.car=yytext[0];return LP;}
")" {printf(")");yylval.car=yytext[0];return RP;}
"{" {printf("{");yylval.car=yytext[0];return LA;}
"}" {printf("}");yylval.car=yytext[0];return RA;}
":" {printf(":");yylval.car=yytext[0];return PT;}
";" {printf(";");yylval.car=yytext[0];return CO;}
" " {;}
(v|V)(r|R)(i|I)(e|E) {printf("true");return TRUE;}
(f|F)(a|A)(u|U)(x|X) {printf("false");return FALSE ;}
[0-9]+ {yylval.valeur=atoi(yytext);return CTE;}
[a-zA-z_][a-zA-z_0-9]* {strcpy(yylval.chaine,yytext);return VAR;}
. {printf("Caractere (%c) non reconnu\n",yytext[0]);}

%%
g besoin d'aide svp c urgent ???

1 réponse

EverDraft Messages postés 24 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 23 août 2008 1
23 avril 2008 à 02:41
Salut,
au vu de ton fichier je pense que tu essaie de faire un scanner en flex/lex.
Pour construire un compilateur il faut aussi un parseur; je te conseille de le faire en bison/yacc.
Ensuite connaissant un peu le sujet je j'esperes que tu as une excellente modelisation et que tu utilise un language adapte.
au niveau de ton fichier il faut que tu match tous les mots clefs du C (fonction, tableau, variable, structure, elements du preprocessing, ...) et que tu crees des regles dans dans le parseur afin de construire un ast.
Voila.
Je te souhaite vraiment du bon courage.

P.S : gcc est un excelent compilateur xD
1