Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

convertion ptr->long ([HS] flex/bison)

1 réponse
Avatar
Benoit Rousseau
Bonjour,
Je construis un parseur avec flex et bison en C++.
Mon problème est le suivant : une des valeurs de "retour" de flex est
long* yylval_param;

C'est la valeur qui est ensuite passée à bison pour les paramètres $1,
$2 d'une expression régulière...

L'exemple que j'ai sous les yeux se sert de *yylval_param comme d'un
index sur un vector "nodes".
Dans l'expression "SEND ' ' IDENTIFIER ';'", on accède à
l'identificateur par exemple par "nodes[ $3 ]". Et ca ne me plait pas !

Je voudrais faire
new SendNode( $3 );
avec $3 un Identificateur (ou un ProgrammeNode)

Est ce que ces conversions sont assurées ? :
*yylval_param = (long) new Identificateur( "..." ); //dans flex
puis
new SendNode( (ProgrammeNode*) $3 ); //dans bison

Est ce que ce comportement est ~ ok ?



--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

1 réponse

Avatar
Jean-Marc Bourguet
Benoit Rousseau writes:

Bonjour,
Je construis un parseur avec flex et bison en C++.
Mon problème est le suivant : une des valeurs de "retour" de flex est
long* yylval_param;

C'est la valeur qui est ensuite passée à bison pour les paramètres
$1, $2 d'une expression régulière...


Regarde un peu %union.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org