オリジナルのプログラミング言語を開発してみる
プログラミング言語を自分で開発するということは、プログラマなら一度は興味を持つことではないでしょうか。
興味を持ったが吉日ということで、よさげな書籍を参考にして、自分で1からプログラミング言語を開発してみます。
Go言語でつくるインタプリタ | Thorsten Ball, 設樂 洋爾 |本 | 通販 | Amazon
参考にするのは上記の書籍です。タイトルの通り、Go言語を使ってインタプリタを開発する手順を解説した書籍です。字句解析、構文解析、評価と一通り必要な機能の実装方法が網羅された良書です。
この書籍を参考にしつつ、自分が書きやすい C# を使って、一部改変しつつ実装を進めていきます。
開発環境
参考書籍では、Go言語を使って開発されますが、私は C# を使って開発することにします。
また、その他環境もろもろは以下の通りです。
- Windows 10
- Visual Studio 2017 Comunity
- .NET Core 2.1.4
- C# 7.2(たぶん)
.NET Core で開発していますが、.NET Framework でも問題なく開発できるはずです。
開発の進め方
基本的にすべて実装は書籍で解説されている通りに進めます。ソースは GitHub 上で管理します。開発内容は記事にまとめます。
切りのいいところで記事を分けて、記事の最後にはその時点でのソースがわかるようにコミットをリンクしておきます。
テスト駆動開発
書籍の進め方がテスト駆動の開発です。それに倣い、テストも実装しながら進めます。
プロジェクト名 Gorilla
作成するプログラミング言語の名前を Gorilla とします。書籍では Monky という名前を付けていますが、強そうなゴリラに名前を変えました。それ以上の意味はありません。
なお、Gorilla の構文は Monky と同じく、C言語風となります。
Gorilla の構文
これから開発していく Gorilla は、以下のような構文をサポートします。
let five = 5;
let ten = 10;
let add = fn(x, y) {
x + y;
};
let result = add(five, ten);
C言語風の構文です。実装しながら拡張していきますが、最低限のそれらしい構文しか実装しません。
最初のプロジェクトを作成
まずは基本となるプロジェクトを作成します。プロジェクト名を “Gorilla” にしてコンソールアプリを作成します。
続けて、単体テストを書く必要もあるので、”UnitTestProject” という名前で単体テストプロジェクトを作成します。
上の2つのプロジェクトが1つのソリューションに追加される感じです。
ソリューションエクスプローラーが上のような形になります。
ここまでのソース
mntm0/Gorilla at 199d9c0bd9184f163cb3a55a14ccf61b8a945dff
コメントを書く