gpt4 book ai didi

c++ - 解析时即时收集类定义

转载 作者:行者123 更新时间:2023-11-28 02:35:19 25 4
gpt4 key购买 nike

目前,我正在做一个简单的编译器项目。

假设有以下语法:

file_input : file_item*
;

file_item : class_def
| variable_decl
;

class_def : 'class' NAME scope
;

variable_decl : 'dim' NAME 'as' NAME
;

现在,在构建我们的 symbol table 时如果我们在类定义之前声明一个变量,我们将得到语义错误,因为它不会在 symbol table 中找到所需的类。

简单地说,我们需要让编译器等到类名被定义,所以声明一个类型为foo的变量。并定义类 foo以后不会打扰编译器。

关于如何实现这一点有什么建议吗?

感谢您的宝贵时间。

最佳答案

你需要一个多遍方法:

首先遍历 AST 一次,以构建将类名映射到类定义的表,而无需执行任何其他需要在表上执行查找的操作。然后再走一遍,在表已经建好的情况下,当遇到变量定义时,你将能够循环你想要的任何类。

关于c++ - 解析时即时收集类定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27672505/

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