全体構造

 ここからは内部構造的な解説をしていきます。

変数の中身はどこにあるの?
スクリプトで宣言した変数はプログラムから参照できるの?
スクリプトを複数同時に動作させたいんだけど
単純なコマンドじゃなくてスクリプト制御を操作するコマンドが作りたいんだけど
自分のプログラムに組み込みたいんだけど

といったカスタマイズには構造理解は必要不可欠です。

「猫の手」を使った主な作業手順を図にしたものです。

pic000

手順は大きく分けて以下の2パターンがあります

s

 ・設定ファイル(mlc.ini)を編集してコマンドを追加、コマンド処理プログラムを追加して
  アプリケーションをビルドするプログラム開発サイド の作業(赤枠)

 ・*.mlcスクリプトファイルを編集してコンパイル、出力されたバイナリーデータを
  上記赤枠工程で作成した実行ファイルに読ませて動作を確認するスクリプターサイド (青枠)

プログラム機能の追加や修正でプログラマーが開発サイドの手順を実行し
それを受け取ったスクリプターがスクリプターサイドの手順で作業します。
プログラムとスクリプトを一人で行う場合もあります。

前章でコマンドを追加した際に、「なぜこれだけでスクリプト関数が呼ばれるの?」と疑問に思った人もいるでしょう。
図の「設定ファイルから猫の手で作成されたヘッダーファイル」を猫の手が出力し、それをプロジェクトのソースがインクルードしているからです。

ここで人が手を加えるのは
 スクリプトソース
 設定ファイル
 実行ファイルプログラムソース
となります。


「猫の手」の解析ルーチンはオープンソースになっています。ライブラリでは提供していません。

特に「猫の手」では mlc.ini 設定ファイルが重要になります。
コマンドの情報やスクリプトがコンパイルされたバイナリーデータの設定なども全て記述されています。

章締

スクリプトコンパイラのやる事は結局テキストをコードに置き換えるだけのものです。
処理を解釈、制御を行うのは解析ルーチンです。

変数を取り扱っても、変数にインデックスが振られ、そのインデックスに対しての入出力コードに変換されるだけです。
変数の実体、それに対する入出力の処理などは全てアプリケーション側で行うものである事に注意してください。

Cのような書き方が出来るといっても、やはり違う部分がどうしてもでてきます。
サンプルに従って、決まったコードを書いて行く分には普通にスクリプトを扱えますが
デバッグの段階で内部構造を理解しているのとしていないのとでは違いが如実に現れます。

次章ではそういった意味での解説をしてみます。