4

我正在尝试实现一个空白解释器来获得乐趣,目前我正在按照本教程学习它的语法。

语法看起来很简单,但我不明白“复制堆栈上的顶部项目”是什么意思。这意味着什么?这是否意味着获取堆栈顶部的值并将其保存到特殊寄存器中?

4

1 回答 1

7

这意味着获取堆栈顶部的值,而不弹出它,然后推送完全相同的东西的第二个副本。

现在有 2 个。

实现的确切方式将取决于您可以使用哪些函数来操作您的堆栈。如果你只是pushpop,那么你可以这样做:

x = pop();
push(x);
push(x);

如果你有一个top函数可以在不弹出它的情况下获取顶部元素,你可以这样做:

x = top();
push(x);

甚至:

push(top());

读起来和伪代码一样好。:)

于 2016-02-07T01:42:06.903 回答