Chạy Bison trong hồ sơ này:Làm thế nào để giải quyết Bison cảnh báo "... không có kiểu tuyên bố"
%{
#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;}
;
%%
Dẫn đến cảnh báo về các loại:
warning: $$ of 'exp' has no declared type.
có nghĩa là gì và làm thế nào để giải quyết nó?
1: cho xuất hiện đầu tiên khi googling 'lỗi bò rừng đã không tuyên bố type' – INS
Chỉ cần một nhỏ rõ ràng. Tôi có '% union {int intValue; int floatValue; } 'nhưng nó không cho phép tôi sử dụng' $$. intValue' hoặc '$ 1.intValue'. Nó nói 'lỗi: yêu cầu cho thành viên' floatValue 'trong một cái gì đó không phải là một cấu trúc hoặc union'. Tại sao như vậy? – Shashwat