Exercice 1
1.1.
Ecrire ces deux codes dans les fichiers indiqués.
fichier-lex tp5exc1.lex
%{
#include "y.tab.h"
%}
%%
^\n {return(terminer);}
\n {return(finligne);}
[aA] {return(lettreA);}
[bB] {return(lettreB);}
. {return(autre);}
fichier-yacc tp5exc1.yac
%{
int c;
%}
%token terminer finligne
%token lettreA lettreB
%token autre
%%
S : terminer {return -1;}
| M finligne {return 0;}
| error finligne {return 1;}
;
M : lettreA M lettreB
| M autre {return (2);}
|
;
%%
main() {
do {
c=yyparse();
if (c==0) printf("mot accepté\n");
if (c==1) printf("mot refusé\n");
if (c==2) printf("erreur lexicale\n");
} while(c>-1);
}
Puis réaliser cet analyseur :
lex tp5exc1.lex
yacc -d tp5exc1.yac
gcc lex.yy.c y.tab.c -ly -ll
1.2.
Modifier sur le même principe, c'est-à-dire en ajoutant un fichier-lex pour l'analyse lexicale,
les analyseurs du TP4 correspondant à l'exercice 2 question 3, puis à l'exercice 3.