我对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。
重要的是,我认为,我最近在我的野牛文件中添加了字符串。以前一切都很好。
答案 0 :(得分:1)
确定。现在我应该责备自己。我深入研究了stackoverflow,发现:http://www.gnu.org/software/bison/manual/html_node/Strings-are-Destroyed.html。当然是什么