%{ #include #include "lists.h" #include "val.h" #include "grammaire.h" %} %option noyywrap %option yylineno CHIFFRE [0-9] LETTRE [a-zA-Z] OP [+=] PAROUV "(" PARFER ")" IDENT {LETTRE}({CHIFFRE}|{LETTRE})* NOMBRE {CHIFFRE}+ BLANCS ([ \t\n])+ %% {BLANCS} {} let {return LET;} in {return IN;} if {return IF;} then {return THEN;} else {return ELSE;} "+" {return PLUS;} = {return EQ;} true {yylval.str = strdup(yytext);return CONST;} false {yylval.str = strdup(yytext);return CONST;} {PAROUV} {return LPAR;} {PARFER} {return RPAR;} {IDENT} {yylval.str = strdup(yytext); return ID;} {NOMBRE} {yylval.str = strdup(yytext); return CONST;} . {yyerror("erreur d'analyse lexicale");exit(EXIT_FAILURE);} %%