orelangをGoで実装した
以下の記事を読んで私も orelang を実装してみました。実装は記事に沿った形にしています。
https://github.com/d-tsuji/orelang
字句解析を JSON パーサにおまかせしているので、やっていることはパースした JSON に含まれる文字を見て順番に評価していくことです。構文解析は適当なので、invalid な JSON を与えると Go でエラーがおきます。
式クラスを定義しておいて、引数に応じてオペレータを呼び出すのか、即値の評価をするのか...ということを繰り返し行っていきます。文字に対応するオペレータを定義するところがポイントです。
言語処理系を実装する書籍だと、Go言語でつくるインタプリタが有名ですが、JSON パーサを用いることで簡単に、だが重要な点は学べそうで、とても良いと思います。