Como resolver o aviso de Bison "… não tem tipo declarado”

Correndo Bison neste arquivo:

<code>%{
    #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;}
;

%%
</code>

Leva a avisos do tipo de:

aviso: $ de 'exp' não tem tipo declarado.

O que significa e como resolvo isso?

questionAnswers(2)

yourAnswerToTheQuestion