当我运行下面的bison
程序时(bison file.y
),我收到错误missing a declaration type for $2 in 'seq'
:
%union {
char cval;
}
%token <cval> AMINO
%token STARTCODON STOPCODON
%%
series: STARTCODON seq STOPCODON {printf("%s", $2);}
seq : AMINO
| seq AMINO
;
%%
我想知道为什么我会收到此错误,以及如何正确声明变量$2
答案 0 :(得分:2)
你没有告诉Bison seq
是什么类型,所以它不知道如何处理$2
。
使用%type
指令:
%type <cval> seq
请注意,$2
使用的类型是单个char
,它不是"%s"
格式所期望的字符串。您需要想出一种从序列中创建自己的字符串的方法。