C# で作るインタプリタ
C# で作るインタプリタ
C# でオリジナルのプログラミング言語のインタプリタを作ります。
Go言語でつくるインタプリタ | Thorsten Ball, 設樂 洋爾 |本 | 通販 | Amazon
上の書籍を参考にして作ります。Go言語で書かれているのをC#で書き換えつつ、中身の実装も多少それっぽく変えました。Go言語がよくわからないので。
一通り完成するまでに、だいたい2~3週間くらいかかりました。記事にやったことをまとめつつだったので、実際には1~2週間くらいで完成できると思います。
記事
字句解析
プロジェクト作成から字句解析までの記事です。
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 式
- 配列
- 文字列