2011-09-08 15 views
5

rozwijam kompilator za pomocą flex/bison. Mam to ostrzeżenie w wynikach kompilacji.ostrzeżenie kompilacja Bison

warning: type clash ('s' '') on default action

Każda pomoc proszę?

+1

To nie jest "kompilator", to "kompilator". –

Odpowiedz

7

Wygląda na to, że jest on powiązany z deklaracją% tokena i% w źródle. bez linii źródłowej i związanego z nią tokena i deklaracji typu trudno ci pomóc.

Jeśli określisz expr typu val i definiujący token identyfikacyjny typu tptr

%{ 
#include "parser.h" 
%} 
%type <val> expr 
%token <tptr> ID 

Jeśli piszesz bez żubra akcji wyemituje ostrzeżenie

expr : ID; 

warning: type clash ('tptr' 'val') on default action 

Należy zauważyć, że poziom bizon Obecnie używam w tym przypadku drukowania nieco innego komunikatu.

foo.by:10.12:warning: type clash on default action : <tptr> != <val> 

Aby rozwiązać to ostrzeżenie potrzeba wyraźnego działania:

expr : ID { $$ = some_conversion_code($1); } 

http://www.gnu.org/s/bison/manual/bison.html#Token-Decl

+0

@VGCE, więc co zrobią operatorzy, aby poprawić ostrzeżenie? Co powinno znaleźć się w akcji? – Har

0

Użyj definicji Unii do swĂłj podane znaki z lex.