4

私は楽しみのために Whitespace インタープリターを実装しようとしています。現在、このチュートリアルに従ってその構文を学んでいます。

構文は簡単に見えますが、「スタックの一番上のアイテムを複製する」の意味がわかりません。どういう意味ですか?スタックトップの値を取得して特殊レジスタに保存するということですか?

4

1 に答える 1

7

これは、値をポップせずにスタックの一番上に取り、まったく同じものの 2 番目のコピーをプッシュすることを意味します。

今ではそれが何であれ2つあります。

実装する正確な方法は、スタックを操作するために使用できる関数によって異なります。pushpopだけの場合は、次のようにできます。

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

ポップせずにトップ要素を取得できるトップ関数がある場合は、次のようにすることができます。

x = top();
push(x);

あるいは:

push(top());

これは擬似コードと同じくらい読みやすいです。:)

于 2016-02-07T01:42:06.903 に答える