やさしいインタープリタの作り方入門だけでは限界を感じてきたので、新しい書籍「明快入門 インタプリタ開発」を買ってきた。
この本は、ある計算式をプログラムにどう解釈させるかという問題について、明瞭に答えが示されている。
ひとつは、逆ポーランド記法で、もう一つは再帰的下向き構文解析だ。
後者はまだ読んでないので何を意味するのかサッパリわからないが、後者が主流らしい。
どちらにしても、逆ポーランド記法をまず理解しておく必要があるようだ。
通常の計算式を逆ポーランド記法に変更すると、以下のようになる。
例A: 1 + 2 → 1 2 +
例A: 1 + 2 * 3 → 1 2 3 * +
例B: (1 + 2) * 3 → 1 2 * 3 *
このように変換すると、演算子の優先順位などを気にせずにプログラムで処理できるらしい。
実証はこれからである。
「式の解析」という章のプログラムをVisual C++で入力しつつ、VBAのコードに置き換えていくが、ポインタを使った部分が単純変換とはいかずに苦戦中。