Awesome
floating-lang
$ node js-output/all.js source.flt
Examples
Hello, world!
4/9*(1-10^-72)+1/10^73
4/9*(1-10^-29)+1/10^30
4444444114441/10^13
13/10+5/90*(1-10^-67)+1/10^69
247/1000
5/9*(1-10^-12)+1/10^13
4/9*(1-10^-87)+1/10^88
22555555551/10^10
3447444155555513727/10^19
cat
2*7/5
11294/11111
647/10^3
仕様
概要
Floatingは、小数の桁を利用したプログラミング言語です。
Brainf**kなどと同様に、左右無限のテープの上を動きます。テープの各番地の初期値は0です。
各行の数式の計算結果の小数点以下を命令列として解釈します。 1行目から順に実行されます。また、一行の中では小数第一位から順に実行します。 空行は許されません。
整数リテラルと四則演算、累乗、括弧、正負号が使えます。
ただし、累乗は指数が整数である必要があります。
また、$
は、そのとき指しているテープ上の数字に評価されます。
命令テーブル
式の計算結果は正でなければなりません。このとき
- 1より小さければ、小数点以下をそのまま実行します。
- 1以上であれば、小数点以下を命令テーブルの(整数部分)番地に保存します。 はじめ、命令テーブルには何も保存されていません。
桁と命令の対応
桁 | 命令 |
---|---|
0 | getchar |
1 | putchar |
2 | 左に1回移動 |
3 | 右に1回移動 |
4 | 指す値を1増やす |
5 | 指す値を1減らす |
6 | 入力の終端で1、他で0を書き込む |
7 | 命令テーブルの(指す値)番地を実行 |
8 | 正常終了する |
9 | 何もしない |
7でテーブルに登録されていない番地を指定した場合、何も起こりません。