floating-lang
September 23, 2018 · View on GitHub
$ 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でテーブルに登録されていない番地を指定した場合、何も起こりません。