/* Analyseur syntaxique des expressions parenthèsées imbriquées imprime les hauteurs des parenthèses a utiliser avec exo2-2.lex qui reconnait les differents terminaux PARA PARB: parentheses de type (), PARC PARD: parentheses de type [], POINTV point virgule */ %{ #define YYSTYPE int int hauteurAB = 0; int hauteurCD = 0; %} %token POINTV PARA PARB PARC PARD %% statement : expression POINTV {printf("\n");} ; expression : ouvrirAB expression fermerAB expression | ouvrirCD expression fermerCD expression | ouvrirAB expression fermerAB | ouvrirCD expression fermerCD | ouvrirAB fermerAB expression | ouvrirCD fermerCD expression | ouvrirAB fermerAB | ouvrirCD fermerCD ; ouvrirAB : PARA {hauteurAB++; printf("(%d,%d)", hauteurAB, hauteurCD);} ; fermerAB : PARB {hauteurAB--; printf("(%d,%d)", hauteurAB, hauteurCD);} ; ouvrirCD : PARC {hauteurCD++; printf("(%d,%d)", hauteurAB, hauteurCD);} ; fermerCD : PARD {hauteurCD--; printf("(%d,%d)", hauteurAB, hauteurCD);} ; %% #include "lex.yy.c" main() { yyparse(); } yyerror(char *s) { printf ("%s\n",s); }