/* Analyseur syntaxique des expressions arithme'tiques imprime les nume'ros de regles a utiliser avec etf.lex qui reconnait les differents terminaux NUMBER: nombre entier (ne sert pas ici), PARO PARF: parentheses, MULT PLUS multiplication addition , POINTV point virgule, ID identificateur */ %{ #define YYSTYPE int int nbRegles = 0; %} %token NUMBER PLUS POINTV MULT PARO PARF ID EGAL %% statement : expression POINTV { printf("nombre de règles utilisées = %d\n", nbRegles);} ; expression : expression PLUS terme {nbRegles++;} | terme {nbRegles++;} ; terme : terme MULT facteur {nbRegles++;} | facteur {nbRegles++;} ; facteur : PARO expression PARF {nbRegles++;} | NUMBER {nbRegles++;} ; %% #include "lex.yy.c" main() { yyparse(); } yyerror(char *s) { printf ("%s\n",s); }