2022-10-13
プログラミング言語は、字句解析、構文解析、意味解析、実行またはコード生成という流れでだいたい作ります。現代ではそれぞれの段階にいい感じのオープンソースがあるので、どこかで尖った新しいプログラミング言語を作ってみることが気軽にできるようになりました。

JavaScriptで関数型プログラミングを実現するライブラリ Ramda は、構文解析、意味解析、実行までを担うオープンソース。比較的新しいので、ほぼESモジュール化されているので活用しやすい!
「ramda/ramda: Practical functional Javascript」
src on GitHub
Deno向けのモジュール提供はありますが、ブラウザからは使うことができなかったので、forkして、GitHub Pages を設定し、source/index.js をimportしてみると __.js を読めずにエラー。

GitHub Pages のデフォルト設定では、"_ (アンダースコア)" で始まるファイル名は読み込めないようになっているとのこと。ルートに ".nojekyll" というファイルを置くことで無効化できて解決しました。

こちらシンプルなサンプルコード import * as R from "https://code4fukui.github.io/ramda/source/index.js"; console.log(R.add(1, 2));

add を使って足し算するコードです。(参照、Ramda Documentation

このRamdaを使い、JSONを使うことで字句解析を省略した、JavaScriptわずか83行でできたシンプルなプログラミング言語 FPJSONを発見。こちらもESモジュール化して、ES-Jamから使えるようにしてみました。

「ES-Jam 〜Webプログラミング道場〜」

Denoが入った環境であれば、下記コマンドで fpjson コマンドとしてインストールすれば、すぐに試せます。

deno install -A -n fpjson https://taisukef.github.io/fpjson-es/fpjson-cmd.js

インストールできたら

["add", 1, 2]

という add.fpjson を用意して

fpjson add.fpjson 3

実行できます!(src on GitHub)

いろんな組み合わせでつくってみよう、新プログラミング言語!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS