在此文件上运行Bison:
%{
#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;}
;
%%
导致以下警告:
警告: 'exp'的$$没有声明的类型。
这是什么意思,我该如何解决?
%union { int intValue; int floatValue; }
,但它不允许我使用$$.intValue
或$1.intValue
。 它显示错误:请求在非结构体或联合体中使用成员'floatValue'。为什么会这样呢? - Shashwat