11-01.なぜ今更C言語なのか

 以前は、このドキュメントでは自分だけの言語を作成しようということでoreProjectという、なんちゃってPHPのような言語を紹介しました。
 しかしながら、途中から、文法上の矛盾が出てきて、ちょっとこれはまずい、という感じになってしまいました。
 そこで、矛盾のない言語とはどういうものなのか、一度体験してみる必要があると感じました。それが第一の理由です。
 そのためには、何かありものの言語を実装するのが一番です。そいうわけで、僕自身、一番慣れているC言語を選択するに至りました。
 第2の理由としてはコードを保存しておくことができるようにしたい、ということです。
 oreProjectは研究や遊び(暇つぶしでもよい)の意味合いが強いサンプルです。
 しかし、今度挑戦するプログラムは何かに使えるのを目的にしたいと思います。
 C言語なんてどこにもあるし、無料で手に入るのに、何に使えるの?という声が聞こえて,きそうです。しかじ、実は、こういった簡易コンパイラはスクリプトとして利用可能なのです。僕はBaseCross64というゲームのフレームワークも公開しています。
BaseCross64
 例えばここに使えるスクリプトを用意できれば、開発効率があがります。
 例えば、ゲームステージの初期化をする場合、BaseCross64ではCSVやXMLで作成するのが一般的です。(プロの現場ではバイナリ化するんでしょうが、BaseCross64は教育用や、内部ツールとして使うようになっているので、そこらへんは今の話と違います)。
 CSVは単純で扱いやすいデータですが、細かく読み込みしようとすると、それなりに、プログラムを書かなければいけません。
 BaseCross64はC++のフレームワークですので、修正したら、再コンパイルしなければなりません。
 しかし、CSVの読み込み時にある程度動的な処理をすることができたら、C++側の負担はずいぶん減ります。ほかにもいろいろスクリプトが書けると便利な局面が多々あります。

仕様を決める

 ということで、まず、仕様を決めたいと思います。
 もちろん、C言語をそのまま実装できれば一番ですが、そんな天の上を目指すのではなく、最低限C言語ぽいものをまず作成します。
1、スクリプトファイルは1つ
2、main()関数で始まり、main()関数でおわる
3、デバッグ出力関数として、dump文を作る。(C言語のprintfに比べ、大きく制限がある)
 本当に最低限の仕様です。それでも、ちゃんと作成しようと思えば、結構かかりそうです。
 では、次の項から早速始めようと思います。