プログラミング言語「BG」が完成した

2018年8月2日

先日、Bepro( ブログ名 )のチュートリアルで使用するためのプログラミング言語「BG」が完成した。

BGの作成は5月から始めたため、約3ヶ月費やしたことになる。

予定では1、2ヶ月で済ますつもりだったが、ダラダラ作業していたらこんなに経ってしまった…。また別の要因として、BG.exe( 実行環境 )の作成に苦戦したというのもある。

…まぁ自分がダメな話はさておき、ここからは作成したBGについて述べていく。

なぜBGを作ったか?

BGを作成した理由は下記の4つ。

  1. メモリをイメージしやすい言語が欲しかった。
  2. 環境構築を不要にしたかった。
  3. 仕様としてコードに制限入れ、学ぶ過程で均質なコードの利点を理解できるようにしたかった。
  4. 根本的な仕組みを学ぶため、言語の機能を極力少なく、かつ低レベルにしたかった。

これらと一致するプログラミング言語は探した限りで存在しなかったため、BGを作成することにした。

面倒だったこと

BGで面倒だったのは「式の実装」だ。

なぜかというと、式内で「関数」や「文字列リテラル」が使用できるため、正規表現で簡単に抽出することができなかったためだ。

その結果、文字列の前後から順に対応する「括弧」や「クォート」を判別するという愚直な処理で書くこととなり、時間がかかった。

hoge( fuga( 5 ) . " piyo() + " ) ← こんな式があり得るため簡単に抽出しづらい

また、言語とは別だがBG.exeのショートカットキーの対応も面倒だった。

これはブラウザによってキーイベントに差異があることが原因だ。

そのためブラウザに応じて処理を切り替えねばならず、対応に手間取ってしまった。

影響を受けた言語

BGが影響を受けた言語は「Sunaba」だ。

Sunabaの仕様や実行環境をとても参考にした。

参考

作成して得たもの

BGを作成して、得たものは下記の通り。

  1. JavaScriptの知識が増えた。( 言語をJavaScriptで作成したため )
  2. 正規表現に慣れた。
  3. 言語の作り方を学べた。
  4. ブログにユニークなコンテンツができた。

個人的には「1」と「4」が大きい。

今後について

今後は作成したBGを用いてBeproのチュートリアルの記事を作成する予定だ。また、現状はサンプルができてないので、それの作成も平行して進めていこうと考えている。

とりあえず長きに渡ったBGの作成が無事終わってよかった。