2011-09-08 38 views
5

am developping trình biên dịch bằng cách sử dụng flex/bison. Tôi có cảnh báo này trong kết quả xây dựng của mình.cảnh báo Biên soạn Bison

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

bất kỳ trợ giúp nào?

+1

Nó không phải là 'bộ biên dịch', nó là 'trình biên dịch'. –

Trả lời

7

Dường như có liên quan đến khai báo% token và% type trong nguồn của bạn. không có dòng mã nguồn và mã thông báo và loại khai báo có liên quan sẽ rất khó để giúp bạn.

Nếu bạn chỉ định một expr loại val và Definer một thẻ ID của loại tptr

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

Nếu bạn viết mà không cần bất kỳ bò rừng bizon hành động sẽ phát ra một cảnh báo

expr : ID; 

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

Lưu ý rằng mức độ bò rừng Tôi hiện đang sử dụng in một thông báo nhỏ khác nhau trong trường hợp này.

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

Để khắc phục cảnh báo này, bạn cần một hành động rõ ràng:

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

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

+0

@VGCE vì vậy op sẽ làm gì để sửa lỗi cảnh báo? Điều gì sẽ xảy ra trong hành động? – Har

0

Sử dụng định nghĩa công đoàn để gõ tokens cho bạn từ lex.

Các vấn đề liên quan