字句解析以降のことはさらっと流す感じにします。ここから先は処理がややこしくてめんどうくさいし、もう備忘の域を越えてるしねヽ(´Д`;)ノ
ログを追えばいい話ですが、メインとなる処理の流れは、main.cpp のInterpreter オブジェクトの生成がスタートとなりスクリプト文が入ってるファイルをロードした後、CInterpreter の各関数を、Run();–>>WM_TIMER 経由で Tick();–>>Continue();–>>ParseLine();[※Mascot宣言の処理の場合のルート(字句解析)]–>>構造解析–>>以下、マスコットの登録処理へと、続いていきます。
※教本では 25ms 間隔でWM_TIMER イベントが設定してあって、Tick();関数で処理を分けてます。ここで入力待ちなどの処理をしてます。しかしマスコット文には関係しないので無視です。
※マスコットの宣言などのスクリプト文の処理に関しては、入力待ちのスクリプト文などがはいってParsingフラグが立たなければ、どんどん行を処理することになります。
※Tick(),Continue(),ParseLine()の各関数で分岐します。分岐からの処理はVoid 型の処理になりますので(つまりやりっぱなし)、それぞれへ処理を投げると、タイマーイベント待ちになり、WM_TIMERイベントが起きると、二回目以降は、Tick();を基点とするループ作業になります。
※字句解析以降の処理では、オブジェクトが増えてくるのでmascot.cpp の頭にメモリリークチェックをするような文を挿入しました。いれとくと便利ですね。
制作メモ[v07] —————————————————————–
★v07以降は、スクリプトを読み込んで処理するのだが、テスト用なのでビルドしたらDebugフォルダに出来ているWin32Project1.exe をダブルクリックすることで、デフォルトのスクリプトindex.mctを取り込んで実行する。
パーザープログラムの定義の前に、ファイルパスなどを加工するUtility.hとcppを追加。
マスコット宣言とテキストをスクリプトから読み出せるように、パーザープログラムの定義を開始。
CInterpreter.cpp のコンストラクタ実装時、config設定は、取りあえず形を崩さないで残し、
メンバの設定はNULLにしておくことにした。
また、メモリーリークをチェックする仕掛けを施した。
(参考)http://marupeke296.com/TIPS_No7_SearchMemoryLeak.html
——————————————————————————-
コメント