Skip to content

A prototype of rail-layout language

License

Notifications You must be signed in to change notification settings

akamah/proto-railforth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Railforth

Railforth はプラレールのレイアウトを記述するための言語です。 現在はプロトタイプとして公開しており、仕様が大幅に変わる可能性があります。

デモ

デモページ で動作を確認することができます。 こちらの初期データは OSC 2023 Nagoya で展示するレイアウトです。

はじめに

Railforth はFORTHおよびLOGOに影響を受けた言語です。命令はスペース区切りで並べて記述します。 以下のようなプログラムで、このようなレイアウトを記述できます。

s l r

s l r というコマンドを入力した結果として、直線、左曲がり、右曲がりのレールが配置される

1つ目の s という命令で、直線レールを敷きます。 2つ目の l という命令では、その直線レールに繋いで左方向に45度曲がるレールを敷きます。 3つ目の r という命令では、さらに繋げて右方向に曲がるレールを敷きます。

ちなみに、 SL のように、大文字で書くことはできません。 現代においてはキーボードで打つのが大変だし、表記ゆれの原因になるからです。

それと、必ずそれぞれのコマンドは空白を開けて記述してください。 空白は、スペースやタブ、改行文字の組み合わせです。 そのため、 sl のように続けて書くと、 sl なんてない、というエラーが発生して描画が中断されます。(残念ながら、SL列車が走り抜けることはないです)

分岐レールについて。

tr および tl を使うと分岐レールを敷くことができます。 それぞれ、 直線方向と右折の分岐と、直線方向と左折の分岐です。 分岐レールは今までのレールと違い、二手に分かれるため扱いに気をつける必要があります。

分岐を持つようなレールについては、反時計回りに見て次の端点から繋がっていきます。 例えば、

tl s s

のように記述すると、まずは向かって直線方向に繋がります。

tl s s というコマンドを入力した結果

逆に、右への分岐を使うと、今度は右折方向へと伸びていきます。 これが、反時計回りに見て次の端点につながる、ということです。

tr s s

tr s s というコマンドを入力した結果

では、もう片方の端点から伸ばすのはどうすればよいでしょうか? 再度、 tl s s の例に戻ります。

tl s s というコマンドを入力した結果、再掲

このとき、Railforthの内部では、2つの点を管理しています。ひとつが、直進方向に進むという点、 そしてもう一つが、分岐の左折方向の点です。これらがスタックの要素として管理されています。

スタックの先頭には直進方向の点が、その次(今は一番下ですね)には左折方向の点があります。 そして、線を伸ばす際には、 スタックの先頭にある点 にレールをつなぐように線路を伸ばします。

スタックの状況

では左折方向に伸ばしたくなったらどうするかというと、スタックの先頭から直進方向の点を取り除く必要があります。 Railforth には各種のスタック操作命令がありますが、先頭から取り除くには . を使用します。 これも、空白で区切って一文字で入力してください。

すると、スタックはこのような状態になります。

tl s s .

スタックの状況・そのに

その後は、左折方向に線路を延ばすことができます。

こういった事情から、RailforthはFORTHのスタック操作の利点と、 LOGOのタートルグラフィックスの概念を組み合わせた言語にする必要があったのです。

ちなみに、オリジナルのFORTH と同様、swap 命令を使うとスタックの上ふたつを入れ替えられたりします。 その他にも、スタック操作命令を追加する予定です。

命令一覧 (未完成)

ほかにも様々なレールがあります。ちょっと時間がいまないため、とりあえずこういう命令があるよ、というのを共有します。

How to Build

Railforthは Elm 0.19 を用いて開発されています。

ライブビルド

elm-live を利用して手元で動かすには、以下のようなコマンドを使います。 elm-live src/Main.elm --open --start-page=./index.html -- --output=./build/main.js

ビルド

以下のコマンドでビルドができます。 elm make --output=build/main.js --optimize src/Main.elm

About

A prototype of rail-layout language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages