错误$ 1的`debut'没有声明的类型Bison / Yacc

时间:2015-06-06 08:18:02

标签: bison yacc

我对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

1 个答案:

答案 0 :(得分:2)

$1 of debutdebut制作的第一个符号,即。添加符号。由于ADDITION符号没有声明的类型,yacc无法将$1占位符扩展为任何有意义的内容。

要解决此问题,请将%type <val> ADDITION添加到定义列表(第一个%%之前的部分)。