gpt4 book ai didi

c - 对文件中的字符串进行标记

转载 作者:行者123 更新时间:2023-11-30 18:04:25 25 4
gpt4 key购买 nike

我有一个文件,我正在对其中的所有字符串进行标记。

因此每个 token 都存储在 char *token = (char *) malloc(len + 1); token 在分配新 token 之前被释放,因此我需要一种存储 token 的方法以供进一步使用。

存储代币的好策略是什么?我有一个函数可以一次打印出一个 token 字符串。

我的问题不是关于如何标记或解析,所以请忽略它的实现。我的问题是,我有一堆字符串在循环内分配和释放多次。那么我如何将每个分配存储在其他地方以供进一步使用?

最佳答案

通常 token 不存储到文件中。当解析器准备好读取更多输入时,解析器会请求它们。

因此, token 存储在程序堆的内存中,在处理它们后(可能在文件完全解析之前很久)它们被释放。

--- 更新以遵循编辑 ---

如果您担心过度分配和释放,那么您有多种解决方案,具体取决于您尝试解决的问题的细节。

对于字符串,您可以通过“字符串生成器”界面创建它们,该界面会检查该文本中是否已存在字符串,如果存在,则返回对已存在字符串的引用。请注意,为了使其正常工作,所有返回的字符串必须是不可变的(因为更改一个引用中的字符串将更改所有引用中的字符串)。对于数字、 bool 值等也可以采用类似的解决方案。

对于 token 重用,您可以将 token 放入一个结构中,该结构主要通过指针引用可能被解析器“使用”的数据。这样,解析器就会获取 token 的“字段”,并且可以将“骨架” token 添加回“重用队列”。重用队列应在将 token 返回到 token 生成器之前重置 token 的“数据”引用, token 生成器将被重写以向队列询问其数据结构。如果“队列中”没有 token ,队列应该默默地分配它们。

也存在其他解决方案,具体取决于您想要的巧妙程度。

关于c - 对文件中的字符串进行标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640386/

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