gpt4 book ai didi

java - 词法分析时如何存储token

转载 作者:搜寻专家 更新时间:2023-11-01 01:34:48 26 4
gpt4 key购买 nike

我正在尝试设计一个编译器,并且正在进行词法分析。假设我使用一个简单的“Hello World!”作为字符串文件编程并从中提取标记。存储这些 token 的最佳方式是什么?在单个数据结构中,还是在两个或更多数据结构中,具体取决于 token 的类型?

最佳答案

实际上,您并不想存储所有的 token 。

您要做的是生成标记,一次一个,然后将它们交给解析器。在解析器检查 token 后,不再需要 token 。解析器可以从 token 中复制数据并使用它在 AST 中构建节点。可以说您可以使用单个全局 token ,尽管这被认为不是好的做法,并且如果您的语言有一个对 token 流进行操作的预处理器,这将不起作用。

也许你想问的问题是,AST 节点是如何长期存储的?答案是它们可以从堆中动态分配,并且它们通过 AST 中的父/子链接绑定(bind)在一起。这足以可靠地跟踪它们。

您可能会考虑根据类型索引 AST 节点。对于大多数编译任务,这是不必要的。对于某些工具,这很有用,因为它允许工具在非常大的树中快速找到各种节点类型。 YMMV.

关于java - 词法分析时如何存储token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21427806/

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