大家好,我目前正在实施一种简单的编程语言来学习,但我需要一些建议.目前我正在设计我的口译员,我遇到了一个问题.
我的语言是C的一个子集,我在堆栈解释器实现方面遇到了问题.在下面的语言中将编译:
somefunc ()
{
1 + 2;
}
main ()
{
somefunc ();
}
Run Code Online (Sandbox Code Playgroud)
现在这没关系,但是当计算"1 + 2"时,结果被推到一个堆栈然后函数返回但是堆栈上仍然有一个数字,并且不应该存在.我怎样才能解决这个问题?
我想过在函数调用之前保存堆栈的"状态"并在函数调用之后恢复"状态".例如,保存堆栈上的元素数量,然后执行函数代码,返回,然后从堆栈中弹出,直到我们拥有与之前相同数量的元素(如果函数返回了某些内容,则可能为+1).
有任何想法吗?谢谢你的任何提示!