#プログラミング言語 Ame
Esolangも言語系もよく知らない私が深いこと考えないで行きあたりばったりで作った言語です。
作ってからそれとなく「Whitespaceに似てるなぁ」とか思ったのは内緒です。
Ameという名前の由来は見た目。
/ // ../ ./ . /| /
/ /| | / // | |/| /|
|. /|| |/ |/ | |/. /|
|/ / /| ||/. /|/.
/| __,__ / /. /|
/ / / \ \| / |/
^^^^^^l^^^^^^ /! ./
雨だね。 l∧_∧ /!..
傘いるかいl´・ω・`)
0⊂ )
し─J
##特徴
- 多分スタック指向
多分というのは、スタックが2つ(WM,LTM)と変数(tmp)があるため。
これはswapが文法上難しかったための代替手段。2番目のスタックを変数にpullできるpull2コマンドと、他のデータの保管用のスタックがもう一つあるためこれでswapできる。
そのこともあり、演算結果はpushされずにtmpに代入される - 3進数で表現
2進数だと長い。なるべく少ない文字数で難読に作りたい。よって3進数。 - 4文字使用(他はスペース含めコメント)
使う文字:/|.!
##語彙
###数値宣言
"/"と"!"の間に3進数で記入。
ただし、最高位は右側。
{0:/, 1:|, 2:.}
////|!:27
/...!:26
###コマンドなど
command | meaning | command | meaning | example | |
.// | WM.push | !// | + | WM[1]+WM[0] | |
.|/ | WM.pull | !|/ | - | WM[1]-WM[0] | |
../ | WM.pull2 | !./ | ∗ | WM[1]∗WM[0] | |
./| | LTM.push | !/| | / | WM[1]/WM[0] | |
.|| | LTM.pull | !|| | % | WM[1]%WM[0] | |
..| | LTM.pull2 | !.| | < | 1 if WM[1]<WM[0] else 0 | |
./. | WM.top | !/. | if | if WM[0]==0: | |
.|. | LTM.top | !|. | while | while WM[0]!=0: | |
... | loop,ifの終わりEnd | !.. | print(str(WM[0]),end='') |
すべてWM上の操作で演算後はpushされずにtmpに代入される
####str()とは
3進数で5桁区切りでASCIIコードに変換する
##開発環境
Python2.7で組みましたが、Python3.xでも動くようにしてあります。
難読言語だしコードも難読じゃないとと思ってワンライナーで書きました。
Python 2.7.3
Arch Linux