idlist : idlist ',' ID {
$$.str=$3.str;
$$.ptr=(idtype*)&$1;
}
| ID {
$$.str=$1.str;
$$.ptr=NULL;
}
idlist在这里是idtype类型。我是Yaac的新手。我做了一些愚蠢的事情,因为我的代码循环通过一个id。当我在一个级别使用它时。
所以这里的语法在ID之后有类型。我可以使用堆栈来做到这一点,但我认为这很可爱。
答案 0 :(得分:1)
问题是您正在使用$1
的地址,这是仅存在于该规则操作的本地临时地址。因此,在操作完成后,它会消失,留下$$.ptr
悬空,并指向将被重用于其他内容的内存。