13-02.今後の制作とスタックマシン

 今回のC言語を作るでは、最終的にはスタックマシンという形で実装しようと思っています。
 スタックマシンというのは、プログラムのコード実行を実装するにあたって、スタックの考え方を利用するということです。
 例えば10+30という演算があった場合、コードの配列は10、30、+と並んでいます。これは.yファイルに演算の優先順位を的確に記述することで、このような並びになります。  そのとき、スタック操作は
1、10をpush
2、30をpush
3、プラス演算とわかるので、30をpop
4、10の場所(スタックの先頭)に30を加算
5、結果としてスタックの先頭は40になる
 で、表現できます。
 例えば、そのあと、出力命令があった場合、スタックをpopし(40を取得)、それを出力すればいいことになります。
 基本的にこの考えかたで、スタック操作しながら実行を実装します。

実際の実装

 しかしながら、いきなりスタックマシンを実装するのは、ちょっと無理があると判断しました。
 順次処理はある程度うまくいくのですが、分岐やループ、関数定義や関数呼び出しを、いきなりスタックマシン用に記述するのは、至難の業と分かりました。
 ですので、いったんoreProjectのように、階層化された式や文を作成し、oreProjectのように、いったんトレースしながら実行する状態を作り出したのち、そこからニーモニックを生成する処理を記述していきたいと思います。
 道のりは長いですが言語作成というのは、この間、いろいろ実験してみて感じたことですが、急いではあかんということです。一度決めた方針やアイディアが、文法によっては、その手法では表現できない部分が多々出てきます。そういった経験を踏まえ、少しづつ制作していきたいと思います。