Compilation
hichemkou22
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
EverDraft Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
EverDraft Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
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 ???
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 ???
A voir également:
- Compilation
- Breach compilation c'est quoi - Guide
- Compilation error: expected unqualified-id before '{' token ✓ - Forum C++
- Erreur de compilation projet ou bibliothèque introuvable - Forum Excel
- Must declare a named package because this compilation unit is associated to the named module - Forum Java
- Erreur de compilation : Projet ou bibliothèque introuvable - Forum VB / VBA
1 réponse
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
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