【単純なスクリプトコンパイラを作る 第一部】
アドベンチャーゲームのプログラムを作る際、
シナリオデーターとプログラムを分割したかったけど、結局分割できずに
シナリオデーターなどをプログラムの中に入れては居ないでしょうか。
そんな人の為の物です
なお、知り合いに教えるために作ったので、説明は殆どありませんし、出来が良くないです。
目的は、以下のことです。
(1)1文字インタープリター
(2)1文字スクリプトコンパイラ
(3)文字列の切りだしで簡単なコンパイラ
極力難しい専門用語は使わないようにして作っています。
文法もシンプルで、大きく分けて3つしかありません。
(1)ラベル
(2)計算式
(3)命令
もし、複雑な物を使いたい場合、
スクリプトコンパイラを使うに乗っている拙作の acc.exe を使うか、lexとyaccで作った方が良いと思います。
【単純なスクリプトエンジン(1文字インタープリター)】
スクリプトエンジンで、直接 txt を読み込む場合
【スクリプトコンパイラとスクリプトエンジンの分割】
なぜ、分けた方が良いか。
【文字列の切り出し】
よりわかりやすい書式にする
【実用的な仕様にする】
実用的な範囲に拡張する
ちなみに、scr シリーズの使用、改良、改悪は自由にしてください。
こんな物で良ければソースコードをそのままでクライアントへ納品してもらってもOKです。
【サンプル1】
:start
r0=0
:loop0
m 選択してください
s r1 続ける,終了する
i r1=1 exit
m 続けます
g loop0
:exit
m 終了します
e
【サンプル2】
start:
r0=0
loop0:
mes 選択してください
select r1 続ける,終了する
if r1=1 exit
mes 続けます
goto loop0
exit:
mes 終了します
exit