单独维护堆栈帧和符号表的不便

问题描述

简介 我正在创建一种静态类型语言,其中所有变量都被视为静态全局变量。因此所需的内存量在编译时是已知的(类似于 Fortran 66 的工作方式)。我观察到堆栈帧的结构等同于符号表的结构。唯一的区别是,符号表包含符号的类型,而堆栈帧包含变量的值。

enter image description here

不便 这导致“加倍”努力以确保这两个表是等效的。我需要确保它们以相同的方式生成,AST 节点使用对表示相同作用域的符号表/堆栈帧的引用进行装饰。一个更值得注意的任务是内置变量/方法的实现。定义和初始化内置函数需要我首先在符号表中定义它们的类型,然后在堆栈帧中给出它的值。最重要的是,我还有由符号表和堆栈帧表示的命名空间。因此,我需要确保指向这些命名空间的链接在两种表格格式中都相同。

总而言之,管理两种不同的表类型很不方便,而且容易犯愚蠢的错误

解决方案?我描述的是其他语言遇到的问题吗?如果是这样,他们如何解决这个问题?我正在考虑在语义分析阶段将堆栈帧和符号表合并在一起,但我担心我忽略了某些东西,或者这种方法可能会导致一些问题。任何建议将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)