微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决单独维护堆栈帧和符号表的不便

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

enter image description here

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。