gpt4 book ai didi

c - 弹性/Bison : Error recovery destructors?

转载 作者:行者123 更新时间:2023-12-02 03:50:03 25 4
gpt4 key购买 nike

对于至少包含一项的逗号分隔列表,我有以下语法:

column_expression_list:
column_expression {
$$ = LinkedList_New();
LinkedListItem *item = LinkedListItem_New($1);
LinkedList_add($$, item);
}
|
column_expression_list T_COMMA column_expression {
LinkedListItem *item = LinkedListItem_New($3);
LinkedList_add($1, item);
}
;

但考虑一下:

column_expression error

$$ = LinkedList_New(); 会泄漏。有没有一种方法可以设置一个析构函数,当它从堆栈中弹出时?

最佳答案

假设您使用名为“LinkedList_Del”的函数销毁一个包含所有项目的列表,请使用 Bison 的 %destructor 指令,该指令专门用于清理因错误而最终未使用的已分配元素:

%destructor { LinkedList_Del($$); } column_expression

祝你好运!

引用: http://www.gnu.org/software/bison/manual/bison.html#Destructor-Decl

关于c - 弹性/Bison : Error recovery destructors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com