3年前に作った簡単なプログラミング言語を紹介する

当時は趣味で作ったものを発信するという発想がなかったため、一人で孤独に作って満足して終わっていたのですが、今更ですがこちらを紹介します。

2018年2月頃に少しずつコツコツと開発していました。

作ったもの

C++で簡単な文法のインタプリタを作りました。ほとんど電卓に毛が生えたようなものなのでCalculatorという名前にしています。全く実用的なものではないですが、プログラミング言語の学習目的で作成しました。

簡単な言語ですが、レキサーとパーサーを自作していて、抽象構文木(AST)を構築して動くようになっています。

こちらがテストコードで、このプログラミング言語で動く実例集となっています。

こちらがfor文です。

a = 0
for (a < 10)
   if (a % 2 == 0)
       print a
   end
   a = a + 1
end

こんな感じでも書けます。

sum = 0
for (a = 1 to 10)
   for (b = 1 to 10)
       sum = sum + a * b
    end
end
print sum​

if文です。

a = 10
if (a % 3 == 0)
   print 1
elseif (a % 3 == 1)
   print 2
else
   print 3
end

関数定義も行えます。

function add(a, b)
   return a + b
end
a = add(1015)
print a

なぜ作ったのか

2018年の2月頃というと、新卒1年目のころで、ちょうど色々あった案件を担当していた頃でした。

その案件自体はなんだかんだで泥臭い現場でやってく力みたいなものがついたので、今思い返すとまあ良い経験だったのですが、当時は色々と思うところがあったため、趣味のプログラミングに情熱を向けていたのだと思います。

言語処理系を作りたかったのは、もともと大学・大学院では電子工学や信号処理などが専門で、アルゴリズムとデータ構造とかの授業はありつつも、情報系学科の演習であるような、プログラミング言語を作るなどはやったことがありませんでした。そのため、大学の頃から作ってみたいと思ってました。

また、その当時は、@ruiuさんのTuring Complete FMに聞いて、低レイヤのプログラミングに対する情熱が高まっており、それらの理由で実際に作ってみようと思いました。

参考にした本

こちらの書籍を参考にしてインタプリタの作り方を学びました。最初は本を読まずにいきなり作り始めたのですが、だんだん普通はどうやるのか気になっていったため途中から本を読みました。

本が分かりやすかったのもあると思いますが、作りながら読んでいるせいか結構頭に入りやすかった気がします。

おわりに

3年以上前なので、もうほとんど作りなどは忘れてしまっていたのですが、今読んでみると、初めて作ったにしてはそこそこ分かりやすく書けているような気がします。

プログラミングで特に作りたいものがない人は、とりあえずプログラミング言語を作ってみると面白いかもしれないです。

最後まで読んでいただきありがとうございます。 他の記事はこちらからどうぞ → https://note.com/sat0b3ee/