大家好,我目前正在实现一种简单的编程语言以进行学习体验,但我需要一些建议。目前我正在设计我的解释器并遇到了问题。
我的语言是C语言的子集,我在堆栈解释器实现方面遇到了问题。在这种语言中,以下内容将会被编译:
somefunc ()
{
1 + 2;
}
main ()
{
somefunc ();
}
现在这个问题还好,但是当计算"1+2"时,结果被推到了一个栈上,然后函数返回,但是栈上仍然有一个数字,这不应该存在。我该如何解决这个问题?
我考虑过在函数调用之前保存栈的"状态",并在函数调用之后恢复该"状态"。例如,保存栈上元素的数量,然后执行函数代码,返回,然后从栈中弹出直到我们有与之前相同的元素数量(或者如果函数返回了某些东西,可能会多一个)。
有什么想法吗?感谢任何提示!
=
运算符的表达式,它与+
或-
没有区别,除了=
会将值赋给一个变量之外没有其他不同。否则,它的行为就像所有其他运算符一样。 - John Kugelmanvoid
表达式就像调用一个返回void
的函数。例如:abort();
。但是,这可能只是一个学术上的考虑。你的示例代码没有列出函数返回类型,所以这对你来说可能根本不是问题。 - John Kugelman