Vérification de bon parenthésage

Contenu du snippet

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.