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以上であれば、小数点以下を命令テーブルの(整数部分)番地に保存します。 はじめ、命令テーブルには何も保存されていません。

桁と命令の対応

命令
0getchar
1putchar
2左に1回移動
3右に1回移動
4指す値を1増やす
5指す値を1減らす
6入力の終端で1、他で0を書き込む
7命令テーブルの(指す値)番地を実行
8正常終了する
9何もしない

7でテーブルに登録されていない番地を指定した場合、何も起こりません。