私は楽しみのために Whitespace インタープリターを実装しようとしています。現在、このチュートリアルに従ってその構文を学んでいます。
構文は簡単に見えますが、「スタックの一番上のアイテムを複製する」の意味がわかりません。どういう意味ですか?スタックトップの値を取得して特殊レジスタに保存するということですか?
私は楽しみのために Whitespace インタープリターを実装しようとしています。現在、このチュートリアルに従ってその構文を学んでいます。
構文は簡単に見えますが、「スタックの一番上のアイテムを複製する」の意味がわかりません。どういう意味ですか?スタックトップの値を取得して特殊レジスタに保存するということですか?
これは、値をポップせずにスタックの一番上に取り、まったく同じものの 2 番目のコピーをプッシュすることを意味します。
今ではそれが何であれ2つあります。
実装する正確な方法は、スタックを操作するために使用できる関数によって異なります。pushとpopだけの場合は、次のようにできます。
x = pop();
push(x);
push(x);
ポップせずにトップ要素を取得できるトップ関数がある場合は、次のようにすることができます。
x = top();
push(x);
あるいは:
push(top());
これは擬似コードと同じくらい読みやすいです。:)