Bison 连接非端子以进行背面配线

Bison 连接非端子以进行背面配线,bison,Bison,idlist在这里是idtype类型。我是Yaac的新手。我是否做了一些愚蠢的事情,因为我的代码是通过一个id循环的。当我在一个级别上使用它时 因此,这里的语法在ID之后有类型。我可以使用堆栈来实现这一点,但我认为这很可爱。问题是您使用的地址是$1,这是一个仅为该规则操作而存在的本地临时地址。因此,在操作完成后,它就会消失,留下$$.ptr悬空,并指向将被重新用于其他用途的内存 idlist : idlist ',' ID { $$.str=$

idlist在这里是idtype类型。我是Yaac的新手。我是否做了一些愚蠢的事情,因为我的代码是通过一个id循环的。当我在一个级别上使用它时


因此,这里的语法在ID之后有类型。我可以使用堆栈来实现这一点,但我认为这很可爱。

问题是您使用的地址是
$1
,这是一个仅为该规则操作而存在的本地临时地址。因此,在操作完成后,它就会消失,留下
$$.ptr
悬空,并指向将被重新用于其他用途的内存

idlist  : idlist ',' ID {
                         $$.str=$3.str;
                         $$.ptr=(idtype*)&$1;
                        }
        | ID            {
                         $$.str=$1.str;
                         $$.ptr=NULL;
                        }