Bonjour,
[Je ne suis pas sur que ca soit le bon forum, mais je n'ai pas trouvé plus approprié...]
Je cherche a créer un mini langage (addition, multiplication, affectation et affichage). J'ai défini un lexique et une grammaire. Les deux compilent avec flex et bison. Par contre, la compilation avec gcc ne fonctionne pas... Savez-vous ce qui cloche ?
Mon lexiqueMa syntaxe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 blancs [\t\n ]+ lettre [A-Za-z] chiffre [0-9] chiffreS0 [1-9] identificateur {lettre}(_|{lettre}|{chiffre})* entier {chiffreS0}{chiffre}* %% {blancs} { /* On ignore */ } "+" return(PLUS); "*" return(MULT); "(" return(OPEN_PAR); ")" return(CLOSE_PAR); "print" return(PRINT); "<-" return(AFFECTATION); {identificateur} {yylavl=yytext;return(IDENTIFIANT);} {entier} {yylval=atoi(yytext);return(NOMBRE);}Merci !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 %token NOMBRE IDENTIFIANT %token PLUS MULT %token OPEN_PAR CLOSE_PAR %token PRINT AFFECTATION %start Programme %% Programme: Programme Instruction | Instruction; Instruction : Affichage | Affectation; Affichage : PRINT OPEN_PAR aAfficher CLOSE_PAR; aAfficher : IDENTIFIANT | Expression; Affectation : IDENTIFIANT AFFECTATION Expression; Expression : NOMBRE | Produit PLUS Produit; Produit : NOMBRE | Somme MULT Somme; Somme : NOMBRE | OPEN_PAR Expression CLOSE_PAR;
Christophe
Partager