最近、字句解析とか構文解析をしていましたが、その試行錯誤のサマリです。 前提 SICPの4章ではSchemeのインタプリタをSchemeで実装します。 勉強のためにC++で実装してみます。 基本はScheme->C++に置き換えています。(そんなに簡単じゃないけど) 置き換え以外の部分が字句解析・構文解析です。 なぜ構文解析が必要か Schemeインタプリタ(以後インタプリタ)をScheme(以後Gauche)で実装する場合と入力の扱いが違うからです。 インタプリタでは入力を受け付けますが、実際にはGaucheが入力を受け取り、Gaucheが手続き eval にそのまま渡します。 この際、Gaucheが受け取る入力はS式ですが、Gaucheはそれ自体S式をS式として認識しているので特に難しい作業は必要ありません。 一方、C++で実装する場合、入力は"(+ a b)"のように文字列で与えられ
![関数型言語の勉強にSICPを読もう - (57) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう5 - higepon blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/988f90172ef53b77eb2425d7ee9ddebe67b5aa2d/height=288;version=1;width=512/http%3A%2F%2Fimages-jp.amazon.com%2Fimages%2FP%2F489471163X.09.MZZZZZZZ.jpg)