小编Fil*_*mic的帖子

为C的子集实现基于堆栈的虚拟机

大家好,我目前正在实施一种简单的编程语言来学习,但我需要一些建议.目前我正在设计我的口译员,我遇到了一个问题.

我的语言是C的一个子集,我在堆栈解释器实现方面遇到了问题.在下面的语言中将编译:

somefunc ()
{
    1 + 2;
}

main ()
{
    somefunc ();
}
Run Code Online (Sandbox Code Playgroud)

现在这没关系,但是当计算"1 + 2"时,结果被推到一个堆栈然后函数返回但是堆栈上仍然有一个数字,并且不应该存在.我怎样才能解决这个问题?

我想过在函数调用之前保存堆栈的"状态"并在函数调用之后恢复"状态".例如,保存堆栈上的元素数量,然后执行函数代码,返回,然后从堆栈中弹出,直到我们拥有与之前相同数量的元素(如果函数返回了某些内容,则可能为+1).

有任何想法吗?谢谢你的任何提示!

c++ interpreter vm-implementation

7
推荐指数
1
解决办法
1527
查看次数

标签 统计

c++ ×1

interpreter ×1

vm-implementation ×1