Bison伪变量返回错误的值

时间:2013-06-07 17:55:02

标签: bison flex-lexer

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

重要的是,我认为,我最近在我的野牛文件中添加了字符串。以前一切都很好。

1 个答案:

答案 0 :(得分:1)

确定。现在我应该责备自己。我深入研究了stackoverflow,发现:http://www.gnu.org/software/bison/manual/html_node/Strings-are-Destroyed.html。当然是什么