编译器设计 - 对内部函数的方法调用是否应该由不同的 AST 节点表示?

问题描述

我正在设计一个使用访问者模式的解释器。该解释器还利用许多内在函数来帮助提高常见任务的性能。到目前为止,在程序的语义分析阶段,用户定义函数和内置函数都绑定到方法调用节点。在代码生成阶段,当访问方法调用节点时,要么访问用户定义方法的块节点,要么执行我写的内在函数的代码。

现在我遇到的问题是这个“绑定”过程很混乱。对于用户声明的函数来说,它很简单——只需访问声明的方法块。然而,对于内置函数,它有点复杂,并且需要将额外的信息装饰到方法调用节点中。所以目前方法调用节点包含了很多信息,其中一些信息如果是对用户定义的方法的正常调用,则根本不会使用。

我想出的一个解决方案是使用不同类型的 AST 节点来调用内部函数。这将允许专门设计的专门的访问者方法来处理我为这些特殊方法编写的代码。然而,互联网上普遍缺乏关于如何在 AST 和代码生成方面实现内在方法的信息。出于这个原因,我担心我会忽略某些东西,或者这种方法可能会导致一些问题。因此,我想知道这是否是编译器/解释器设计中的常用方法,如果不是,遵循这种方法是否有任何重大问题?

解决方法

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

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...