我对Yacc / Bison有疑问。 这是我的代码:
%{
#include <stdio.h>
%}
%union{
double val;
}
%start debut
%token <val> nombre
%left PLUS
%%
debut :
| ADDITION {printf('%f \n',$1);}
;
ADDITION : nombre PLUS nombre {$$=$1+$3;}
;
%%
void yyerror(char *s){
printf("%s \n",s);
}
int main(void){
return yyparse();
}
我收到此错误类型:$1 of 'debut' has no declared type
答案 0 :(得分:2)
$1 of debut
是debut
制作的第一个符号,即。添加符号。由于ADDITION符号没有声明的类型,yacc无法将$1
占位符扩展为任何有意义的内容。
要解决此问题,请将%type <val> ADDITION
添加到定义列表(第一个%%
之前的部分)。