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に比べ、大きく制限がある)
本当に最低限の仕様です。それでも、ちゃんと作成しようと思えば、結構かかりそうです。
では、次の項から早速始めようと思います。