我对 Bison 有奇怪的问题。我是初学者,如果我错了,请纠正我,但是 $1,$2... 等等应该从第一个、第二个等终端/非终端返回值,是吗?
command: IDENT{printf("%s",$1);} SET{printf("%s",$1);} expression{printf("%s",$1);} ENDCMD
我在做编译器,我被困住了,因为从上面的例子中,我在第一次调用时有像“a := 1”这样的表达式(其中 ident 是“a”,set 是“:=”,num 是“1”)“a” , "a :=" 在第二个和 "a := 1" 在第三个。
%union {
int ival;
char *sval;
}
ident 是 sval。
我认为重要的是我最近在我的野牛文件中添加了字符串。以前一切正常。