gpt4 book ai didi

eval - 在字节码编译语言中实现 REPL/eval

转载 作者:行者123 更新时间:2023-12-02 21:15:34 26 4
gpt4 key购买 nike

我正在创建一种编译为字节码并在自定义 VM 上运行的小型语言,其架构在很大程度上受到了我所阅读的有关 Python 和 Lua 的影响。有两个堆栈 - 一个存储函数参数、局部变量和临时值的数据堆栈,以及一个包含每个事件函数调用一个条目的帧堆栈。帧堆栈上的每个条目都包含诸如当前函数、指令指针(当前函数的字节码数组中的索引)和基指针(数据堆栈中的索引 - 标记函数的 args/locals 开始的位置)等信息。

我陷入困境的地方是实现 REPL,或者更具体地说,实现 eval() .到目前为止的想法是在同一个堆栈框架内不断评估用户输入 - 但我看不到一种干净的方法来允许在 eval() 内创建新的局部变量.因为临时数据总是在堆栈上的局部变量之上(堆栈向上增长),所以我能想到的唯一方法是以某种方式注意到 eval() 创建了新的局部变量。然后使用一些hackery重新排列堆栈-但这在一般情况下会产生问题。例如,如果有一个递归函数有条件地使用 eval()我需要遍历帧堆栈并可能调整每个帧的数据堆栈。

我的虚拟机是否能够支持 eval() 的合理实现? ?如果是,上述方法是否合理?如果不是,需要哪些架构更改?

最佳答案

看看这个:http://www.youtube.com/watch?v=yjflVIKY2gQ
(只是拖钓一点)

关于eval - 在字节码编译语言中实现 REPL/eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19091824/

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