質問: ソフト内スクリプトって、どうやってソフト内で、内部評価されてるんでしょう? コマンドを垂れ流すのはわかります。 しかし、forループとかサポートしてるのがあるでしょ。 ソフト内の
回答: ソフト毎にいろいろなやり方があるのでこの方法!という物はないのですが 1.自前でインタプリタやコンパイラ(&実行環境)を持っている HSPや各種エミュレーターソフト、Flash Playerやなかなか気づきにくいのですがウェブブラウザ(外部からJavascriptソースを読んで実行している)はこの方法です。 おもに、命令を逐次解釈するインタプリタ形式と、実行時にネイティブコードに変換するJIT(Just Tn Time)コンパイラがあります。 インタプリタ形式の場合、一命令ずつ評価して親が実行を肩代わりする関数などを実行しています。 ウェブブラウザなどでは、実行時にコンパイルしてネイティブコードにしています。これらの場合は、親のコードを実行対象が呼び出します。 2.埋め込みインタプリタを使用している これもある意味自前ですが、言語の作成元が埋め込みの為の機能を提供していることがあります。 LuaやPythonをスクリプトとしているソフトは、この方法を使用しています。 この場合、LuaやPythonを拡張して、親のプログラムと相互にデータをやりとりする関数や変数などを作成してこれでデータのやりとりをします。 3.WSHを利用している(Windows限定) Windows自体にスクリプトを読み込んで実行する機能が備わっています。 Javascript(正確にはJScript)、VBSなどが利用できるソフトはこの機能でスクリプトを実装しています。 データのやりとりは2と同じ方法です。 4.言語自体がそういう機能を持っている。 JavascriptやPHPの"eval"命令は、与えられた文字列をスクリプトとして実行します。 このほか、C#のRoslyn for Scriptingのようなものがあります。 文字列を渡せば実行してくれるので、任意の文字列を渡せばいいだけです。