Похоже, это связано с вашим токеном% и объявлением типа% в вашем источнике.
без исходной строки и соответствующего объявления токена и типа вам трудно помочь.
Если вы укажете expr типа val и определите токен идентификатора типа tptr
%{
#include "parser.h"
%}
%type <val> expr
%token <tptr> ID
Если вы напишите без каких-либо действий, бизон выдаст предупреждение
expr : ID;
warning: type clash ('tptr' 'val') on default action
Обратите внимание, что в настоящее время уровень бизона, которым я сейчас пользуюсь, напечатает немного другое сообщение.
foo.by:10.12:warning: type clash on default action : <tptr> != <val>
Чтобы исправить это предупреждение, вам нужно явное действие:
expr : ID { $$ = some_conversion_code($1); }
http://www.gnu.org/s/bison/manual/bison.html#Token-Decl