11
Stackylogicを実行する
Stackylogicは、私がそのテイクアップ作られたロジックベースのプログラミング言語である0のと1、入力用のを単一出力0または1上に完了したことを。 Stackylogicプログラムは、3文字01?だけでなく<、1行の最後に1 文字だけを含むことができる行で構成されます。行は空ではないかもしれないとして行が<少なくとも一つ持っている必要があります0、1または?それ以前に。 これは(説明しますが)2ビットのNANDを計算するサンプルプログラムです。 1 ?< 11 ? 0 Stackylogicプログラムのすべての行はスタックと見なされ、下が左、上が右になります。暗黙的に、プログラムの最初の行の前と最後の行の後に空のスタック(空の行)があります。 <我々は呼んでよこれ、カーソルを Stackylogicプログラムが実行されたときに起動するマークスタック。Stackylogicプログラムの実行は次のように進行します。 カーソルが現在指しているスタックから一番上の文字をポップします。 キャラクターがの場合、?ユーザーに0またはのプロンプトを表示し、それがキャラクターであるかのよう1に振る舞います。 文字がの場合、0カーソルを1スタック上に(現在の行の上の行に)移動します。 文字がの場合、1カーソルを1スタック下に(現在の行の下の行に)移動します。 カーソルの移動先のスタックが空の場合、スタックからポップされた最後の値(常にa 0または1)を出力し、プログラムを終了します。 それ以外の場合、カーソルの移動先のスタックが空でない場合は、手順1に戻ってプロセスを繰り返します。 Stackylogicプログラムは常にスタックを使い果たすため、常に終了することに注意してください。 NANDの例 NANDプログラムでは、カーソルは次の位置から始まります?。 1 ?< 11 ? 0 私たちは、入力、ユーザーを仮定します1一度?カーソルがこのようなプログラムを見て作り、下に移動することを意味している、ポップされます。 1 11< ? 0 これ1で、カーソルスタックの最上部にプレーンが表示されます。適切にポップされ、カーソルが再び移動します。 1 1 ?< 0 今、ユーザ入力仮定0のための?カーソルが上に移動することを意味し、: 1 1< 0 再び、a 1がカーソルスタック上にあるため、カーソルがポップして下に移動します。 1 < 0 最後に、カーソルスタックは空なので、最後にポップされた値が1出力され、プログラムが終了します。 であるため、これはNANDゲートに対して正確1 NAND 0です1。もちろん、これは他の3つの2ビット入力でも確認できます。 …