0

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

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

4

1 回答 1

1

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

于 2013-06-08T20:52:16.107 回答