01 オリジナル言語のインタプリタを作る

01 オリジナル言語のインタプリタを作る

オリジナルのプログラミング言語を開発してみる

プログラミング言語を自分で開発するということは、プログラマなら一度は興味を持つことではないでしょうか。

興味を持ったが吉日ということで、よさげな書籍を参考にして、自分で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

 

開発いろいろカテゴリの最新記事