Le bon parenthésage

imenethefirst
Messages postés
5
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
14 décembre 2013
- Modifié par BunoCS le 14/12/2013 à 22:21
Bonjour,

,stp j'ai essayé à ce programme mais ça marche pas pour les parenthéses ;

voila l'énoncé de l'exercice :)

ecrire un programme en LEX qui vérifie le bon parenthésage d'un flot de données sur stdin :

(1) trois types de parenthése :() , [] et {} ;

(2) pas de retour à la ligne dans () ni dans [];

(3) une hiérarchie dans le parenthésage ,ie pas de [] ni {} dans (), et pas de {} dans [] .

et voila le programme en LEX que j'ai fait :)

%{

#include<stdio.h>

#include<assert.h>

int p1=0; /* Variable globale du nb de par ouvrantes */

int p2=0; /*variable globale du nb de entre crochet ouvrante */

int p3=0; /* variable globale du nb d'accolade ouvrante */

%}

%%

"(" {p1++; }

")" {assert(p1);

if (p1>0)

{

p1--;

ECHO;

}

else

printf ("Votre parenthesage est incorrect\n");

}

"[" {assert(!p1);p2++;}

"]" {assert(p2&&!p1);

if (p2>0)

{

p2--;

ECHO;

}

else

printf ("Votre parenthesage est incorrect\n");

}

"{" {assert(!p1&&!p2);p3++;}

"}" {assert(p3&&!p1&&!p2);

if (p3>0)

{

p3--;

ECHO;

}

else

printf ("Votre parenthesage est incorrect\n");

}

\n {assert(!p1&&!p2);}

%%

int main (void) {

yylex();

assert(!p1&&!p2&&!p3);

return 0;

}
A voir également: