C 错误:未声明的变量$

C 错误:未声明的变量$,c,bison,yacc,C,Bison,Yacc,当我运行下面的bison程序(通过bison file.y)时,我发现错误在'seq'中缺少$2的声明类型: %union { char cval; } %token <cval> AMINO %token STARTCODON STOPCODON %% series: STARTCODON seq STOPCODON {printf("%s", $2);} seq : AMINO | seq AMINO ; %% %union

当我运行下面的
bison
程序(通过
bison file.y
)时,我发现错误
在'seq'中缺少$2的声明类型

%union {
       char cval;
}
%token <cval> AMINO 
%token STARTCODON STOPCODON

%%
series: STARTCODON seq STOPCODON {printf("%s", $2);}
seq : AMINO
         | seq AMINO
         ;
%%
%union{
炭化铝;
}
%代用氨基
%标记起始密码子终止密码子
%%
系列:StartDon seq停止密码子{printf(“%s”,$2);}
序号:氨基
|氨基酸序列
;
%%

我想知道为什么会出现此错误,以及如何正确声明变量
$2

您没有告诉Bison
seq
是什么类型,因此它不知道如何处理
$2

使用
%type
指令:

%type <cval> seq
%type seq


请注意,用于
$2
的类型是单个
字符
,而不是
%s”
格式所期望的字符串。您需要想出一种方法从序列中创建自己的字符串。

是Bison抱怨,还是C编译器在编译生成的代码时抱怨?请将Bison或编译器的完整输出复制粘贴到问题正文中。@Someprogrammerdude我通过
Bison file.y
运行该文件,我得到的错误(翻译成英语)类似于
在'seq'
中缺少$2的声明类型,以便从序列中创建自己的字符串并将其分配给
$