自動piet生成。
スタック志向っぽい言語。 一つだけ整数のスタックを持っている。
スタックにnを積む。
PUSH 1 以外を使うと、適当にコード生成しているので、効率が悪い可能性があります。 でもとりあえず動くはずです。
PUSH 'a'
という記法で、対応するasciiコードをpushできるようになりました。
この場合は97がpushされます。
PUSH 0 もできます。
スタックの先頭を捨てる。
スタックから2つ取り和を積む。
スタックから2つ取り、2つ目から1つ目を引いた値を積む。
スタックから2つ取り積を積む。
スタックから2つ取り、2つ目を1つ目で割った商を積む。
スタックから2つ取り、2つ目を1つ目で割った余りを積む。
スタックから1つ取り、それが0ならば1を積み、そうでないならば0を積む。
スタックから2つ取り、2つ目のほうが1つ目より大きければ1、そうでないならば0を積む。
スタックから1つ取り、それを2つ積む。
Pietのロールそのまま。 スタックから2つ取り、2つ目分の深さまでのスタックの値を1つ目分だけ回転する。
回転とは、トップの値を指定の深さに落とし、それ以外を一つづつ上げる操作。
1 2 3 4 3 2 -> top の状態からロールを行うと、 結果は 1 3 4 2 -> top となる。
http://www.slideshare.net/KMC_JP/piet-46068527 ここの39-40を見て下さい。
標準入力から数字を一つ読み取り、その値をスタックに積む。
標準入力から一文字読み取り、その文字のUnicode値をスタックに積む。
インクリメントではない。
スタックから1つ取り、それを数字として出力する。
スタックから1つ取り、そのUnicode値を持つ文字を出力する。
プログラムを停止させる。
その位置にあとで飛んでこれるラベルをつける。
スタックのから1つ取り、その値がゼロなら、対応するwordを持つLABELにジャンプする。
Jump Equal Zero
対応するwordに無条件ジャンプする。
スタックの上2つを入れ替えます。
PUSH 2
PUSH 1
ROLL
と同じです。
config.js
のsize変数を書き換えてみると、うまくいくとより小さい画像が生成される可能性があります。
書き換えて試してみてください。