Jak rozwiązać ostrzeżenie Bison „… nie ma zadeklarowanego typu”

Uruchamianie żubra w tym pliku:

<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>

Prowadzi do ostrzeżeń:

ostrzeżenie: $ z „exp” nie ma zadeklarowanego typu.

Co to znaczy i jak je rozwiązać?

questionAnswers(2)

yourAnswerToTheQuestion