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