/floating-lang

Floating programming language

Primary LanguageJavaScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

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