C# で作るインタプリタ

C# で作るインタプリタ

C# でオリジナルのプログラミング言語のインタプリタを作ります。

Go言語でつくるインタプリタ | Thorsten Ball, 設樂 洋爾 |本 | 通販 | Amazon

上の書籍を参考にして作ります。Go言語で書かれているのをC#で書き換えつつ、中身の実装も多少それっぽく変えました。Go言語がよくわからないので。

一通り完成するまでに、だいたい2~3週間くらいかかりました。記事にやったことをまとめつつだったので、実際には1~2週間くらいで完成できると思います。

記事

字句解析

プロジェクト作成から字句解析までの記事です。

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

02 トークンと字句解析器の役割と実装 [オリジナル言語インタプリタを作る]

03 字句解析器(Lexer) の実装完了 [オリジナル言語インタプリタを作る]

04 REPLを作成し字句解析を行う [オリジナル言語インタプリタを作る]

構文解析

トークン列から抽象構文木(AST)を生成するプロセスです。”10 式の解析” が一番の見どころです。

05 構文解析器と抽象構文木を作る [オリジナル言語インタプリタを作る]

06 構文解析器にエラー出力機能を実装する [オリジナル言語インタプリタを作る]

07 return文の構文解析 [オリジナル言語インタプリタを作る]

08 ASTからコードを復元する [オリジナル言語インタプリタを作る]

09 式の解析(識別子) [オリジナル言語インタプリタを作る]

10 式の解析(前置演算子、中置演算子) [オリジナル言語インタプリタを作る]

11 Pratt 構文解析 [オリジナル言語インタプリタを作る]

12 構文解析器の拡張(真偽値リテラル) [オリジナル言語インタプリタを作る]

13 構文解析器の拡張(式を括弧でグループ化する) [オリジナル言語インタプリタを作る]

14 構文解析器の拡張(if式) [オリジナル言語インタプリタを作る]

15 構文解析器の拡張(関数リテラル) [オリジナル言語インタプリタを作る]

16 構文解析器の拡張(関数呼び出し式) [オリジナル言語インタプリタを作る]

17 REPLを構文解析に対応する [オリジナル言語インタプリタを作る]

評価

構文解析で生成したASTを評価し、その結果を出力します。

18 評価プロセス(リテラル) [オリジナル言語インタプリタを作る]

19 評価プロセス(前置式 “-“, “!”) [オリジナル言語インタプリタを作る]

20 評価プロセス(中置演算, 四則演算ほか) [オリジナル言語インタプリタを作る]

21 評価プロセス(if式, return文) [オリジナル言語インタプリタを作る]

22 評価プロセス(エラー処理) [オリジナル言語インタプリタを作る]

23 評価プロセス(環境とlet文) [オリジナル言語インタプリタを作る]

24 評価プロセス(関数呼び出し式) [オリジナル言語インタプリタを作る]

その他

続きでいろいろと機能を拡張してみようと思います。

予定

  • while, loop 式
  • 配列
  • 文字列