Comment résoudre le Bison d'avertissement “... n'a pas déclaré de type”

L'exécution de Bison sur ce fichier:

%{
    #include <iostream>
    int yylex();
    void yyerror(const char*);
%}


%union
{
    char    name[100];
    int     val;
}

%token NUM ID
%right '='
%left '+' '-'
%left '*'

%%

exp :   NUM     {$$.val = $1.val;}
    | ID        {$$.val = vars[$1.name];}
    | exp '+' exp   {$$.val = $1.val + $3.val;}
    | ID '=' exp    {$$.val = vars[$1.name] = $3.val;}
;

%%

Conduit à des mises en garde du genre de:

avertissement: $$ de 'exp' a pas de déclaration de type.

Que signifie et comment puis-je le résoudre?

  • +1: pour apparaître en premier lors de googler bison error has no declared type
  • Juste une petite clarté. J'ai %union { int intValue; int floatValue; } mais il ne me permet pas d'utiliser $$.intValue ou $1.intValue. Il dit error: request for member ‘floatValue’ in something not a structure or union. Pourquoi donc?
InformationsquelleAutor Asaf R | 2009-06-18