MikoScript3 言語仕様
起動コマンド行
言語仕様の詳細を説明する前に、本章でまず、MikoScript を実行する際のコマンド行の
書き方について説明します。
●本コマンドの機能
本コマンドでは、本スクリプト言語の実行だけでなく、中間コードのライブラリ管理等も
行なえるようになっています。本コマンドで実行できる機能は、次の通りです。
・本スクリプト言語で書かれたソースプログラムを実行
・モジュールファイルの中間コードをロードして実行
・ソースファイルを中間コードに変換してモジュールファイルに格納
・モジュールファイルの格納内容を一覧表示
・本コマンドの用法やバージョンを表示
●コマンド行の一般書式
書式:
<オプション> <ファイル名> <引数>
DOS/コマンドプロンプトから実行する場合は、勿論、この書式の前に、
本プログラムの実行ファイルを指定する必要があります。そのため、実際には、
miko3 <オプション> <ファイル名> <引数>
のようにコマンドを入力する必要があります。なお、以降の説明では、このような
実行ファイルの指定を付けている場合と、省略している場合があります。
一方、アプリケーションに組み込まれた MikoScript を実行する場合は、基本的に、
そのアプリケーションに依存します。ちなみに、Epsaly テキストエディタの場合、
<オプション> <ファイル名> <引数>
の入力だけで済みます。
説明:
<オプション> は、
/ または - で始まり、その直後に、種別を示すアルファベット1字が続きます。
その次に、= と <パラメータ> を続ける場合もあります。この = は省略しても
構いません。また、<パラメータ> は2重引用符で囲うこともできます。ただし、
<パラメータ> の中に空白がある場合は、必ず2重引用符で囲う必要があります。
<オプション> は省略される場合もあります。また、複数になる場合もあります。
<オプション> が複数の場合、各 <オプション> の先頭は必ず、/ または - に
する必要があります。
<ファイル名> は、
操作の対象となるファイルの名称です。このファイルは、本スクリプト言語で書
かれたソースファイルか、または、本言語の翻訳によって生成された中間コード
のモジュールファイルかになります。対象ファイルが、ソースかモジュールかは、
<ファイル名> の拡張子で判断します。拡張子が「.mx 」の場合、モジュール
ファイルとして扱います。拡張子が無い場合、<ファイル名> に「.mx 」を付加
した名称のファイルをモジュールファイルとして扱います。それ以外の場合は、
ソースファイルとして扱います。
コマンドの機能は、デフォールトでは、ソースファイル、または、モジュール
ファイルの実行になります。その場合、<ファイル名> の指定は1つだけに限り
ます。実行以外の機能に変更するには、後述の特別な <オプション> を指定する
必要があります。
<ファイル名> の指定は、相対パスでも、絶対パスでも構いません。相対パスの
場合、基点は、本コマンドの実行時点でのカレントパスになります。ただし、
カレントパスは、後述の /p オプションで変更することもできます。
<ファイル名> は、不要な場合もあれば、複数になる場合もあります。
<ファイル名> には、ワイルドカードは使えません。
<ファイル名> の中に空白文字がある場合、<ファイル名> を2重引用符で囲う
必要があります。
<ファイル名> の最初の文字が - の場合は、<ファイル名> には指定できません。
<ファイル名> がショートカットの場合、対象は、ショートカットの参照先では
なく、ショートカット自身になってしまいます。
<引数> は、
<ファイル名> のファイルを実行する際に、主関数に渡たす引数の文字列です。
この場合、<ファイル名> 以降の全ての項が、<引数> になります。<引数> は、
0個以上の指定が可能です。
コマンドの機能が実行でない場合、<引数> はありません。
例:
miko3 s1.mc ・・・ ソースファイル s1.mc を実行(引数なし)
miko3 s2.mc a b ・・・ ソースファイル s2.mc を実行(引数は a b )
miko3 s3.mx ・・・ 中間コードファイル s3.mx を実行(引数なし)
miko3 s4 c ・・・ 中間コードファイル s4.mx を実行(引数は c )
miko3 /m=sx /n="sample" s1.mc s2.mc s3.mc
・・・ ソースファイル s1.mc s2.mc s3.mc を中間コードに変換して
モジュールファイル sx.mx に格納(モジュール説明文は、sample )
miko3 -d slib ・・・ モジュールファイル slib.mx の内容を一覧表示
miko3 -? ・・・ 本コマンドの用法を表示
●コマンドオプション
本コマンドの各 <オプション> の詳細を、次に説明します。
/d モジュールの一覧表示
このオプション以降に指定された <ファイル名> のファイル内に格納され
ているモジュールの一覧を表示します。
この場合、 <ファイル名> は複数指定可能です。
/f=<コマンド入力ファイル名>
コマンド行の入力を、指定された <コマンド入力ファイル名> のファイルに
切り換えます。これは、ライブラリー作成時等で、コマンド行が長い場合や
同じコマンド行を何回も使う場合に、便利です。
なお、コマンド入力ファイル内の TAB と改行コードは、半角空白と同様に、
コマンドの各項目を区切る空白として扱われます。
例: /f=files.txt
/f=MakeLib.cmd
/h 本コマンドの用法を表示します。( /? と同じ )
/i=<インクルードパス>
#include マクロ で指定されたファイルの検索パスの追加分として、
<インクルードパス> のパスを設定します。
複数のパスを指定する場合は、; で区切ります。
相対パスを指定した場合、現時点のカレントパスが基準になります。
例: /i=D:\Script\Include
/i"..\Inc;E:\Test\Inc"
/l=<ライブラリーパス>
モジュールファイルの検索パスの追加分として、 <ライブラリーパス> の
パスを設定します。
複数のパスを指定する場合は、; で区切ります。
相対パスを指定した場合、現時点のカレントパスが基準になります。
例: /l=D:\Script\Library
/l"..\Lib;E:\Test\Lib"
ライブラリーパスについては、「モジュール」の章で説明します。
/m=<モジュール格納ファイル名>
モジュール格納モードに移行します。つまり、このオプション以降に指定
された <ファイル名> のファイルに対しては、ソースファイルなら、中間
コードに変換してロードし、モジュールファイルなら、そのままロードし
て、最後に、全ロードモジュールを、この <モジュール格納ファイル名>
のファイルに格納します。この /m オプション以降の <ファイル名> は、
複数指定できます。
<モジュール格納ファイル名> に拡張子が無い場合、それに「.mx 」を
付加した名称のファイルに格納します。
<モジュール格納ファイル名> の指定が無い場合( /m だけの場合)は、
最初にロードされたモジュールの名称に拡張子「.mx 」を付加した名称
のファイル名に格納します。
例: -m=hello
-m=GLib.mx
/n=<モジュール内容の説明文>
モジュールファイルに格納する説明文を指定します。このオプションを
省略した場合、モジュールの説明文は、空文になります。
このオプション以降は、それまでに /m オプションがなくても、
モジュール格納モードに移行します。
例: -n="Test Modules"
-n="基本ライブラリー"
/p=<ディレクトリー名>
カレントパスを、<ディレクトリー名> のディレクトリーに変更します。
「ディレクトリー名」は、絶対パスでも、現カレントパスからの相対パス
でも構いません。「ディレクトリー名」の指定が無い場合( /p だけの
場合)は、現カレントパスを表示します。
例: -p=..\src
-p="D:\MikoScript\Library"
/s 内部の処理状態を逐次表示するようになります。
/v 本コマンドのバージョンを表示します。
/? 本コマンドの用法を表示します。( /h と同じ )
/! <実行文>
指定された <実行文> を直接実行します。このオプションを使用する場合、
実行対象の <ファイル名> の指定は、無用です。
DOS/コマンドプロンプトから実行する場合:
<実行文> は、二重引用符で囲う必要があります。この囲いの中で二重
引用符を使う時は、その直前に \ を置いてエスケープ表記にする必要
があります。また、/! と <実行文> の間には、半角空白を入れる必要
があります。
例: miko3 /! "print \"hello\";"
アプリケーションに組み込みの MikoScript を実行する場合:
基本的に、そのアプリケーション依存します。
ちなみに、Epsaly テキストエディタの場合、/! 以降は、本言語の
実行文と同等に扱われます。そのため、<実行文> は、二重引用符
では囲いません。
例: /! print "hello";
●スクリプトを実行する場合のコマンド形式
書式:
<オプション> <ファイル名> <引数>
説明:
・スクリプトの実行では、<オプション> の指定なし、または、/d /m /n 以外の
<オプション> を使います。
・実行対象の <ファイル名> は、必ず1つ指定する必要があります。
・<ファイル名> 以降の項は全て、主関数に渡す <引数> になります。
・実行対象のソースファイルの拡張子は、慣習上「.mc 」を使いますが、特に制約は
ありません。ただし、「.mx 」は、モジュールファイルとして扱われるので、
使えまません。
・実行対象のモジュールファイルの拡張子は、「.mx 」に限定されます。
・<ファイル名> に拡張子が無い場合、<ファイル名> に「.mx 」を付加した名称の
ファイルが、モジュールファイルとして実行対象になります。
・実行対象がソースファイルの場合、まず、コンパイルされて、中間コードに変換
されますが、このとき、コンパイルエラーになると実行は行なわれません。
例:
・カレントパスにある hello.mc というソースファイルを引数なしで実行する場合、
コマンド行は、以下のようになります。
miko3 hello.mc
・カレントパスよりも1つ上のディレクトリにある test.s というソースファイル
を、引数 xyz と abc で実行する場合、コマンド行は、以下のようになります。
miko3 ..\test.s abc xyz
・d:\tools というディレクトリーにある dump.mx というモジュールファイルを、
引数 file.dat で実行する場合、コマンド行は、以下のようになります。
miko3 d:\tools\dump file.dat
●モジュールファイルを生成する場合のコマンド形式
書式:
/m=<モジュール格納ファイル名> /n=<説明文> <ファイル名> ...
説明:
・本コマンドでモジュールファイルを生成する場合、必ず /m と /n のオプションの
両方またはどちらかを、最初に指定する必要があります。
・モジュールファイルの生成では、本スクリプト言語で書かれた1つ以上のソース
ファイルを、それぞれ中間コードに変換して、1つのファイルにまとめて格納
することができます。また、既に中間コードで格納されている複数のモジュール
を1つのファイルにまとめて格納することもできます。あるいは、その両方を
まとめて行なうこともできます。
・モジュールファイルの生成では、スクリプトの実行は行なわれません。
例:
miko3 /m hello.mc
を実行すると、カレントパスにある hello.mc というソースファイルがコンパイル
されて、その中間コードのモジュールファイルが、カレントパスの hello.mx と
いうファイルに格納されます。
miko3 /m=..\lib\slib n="string library" s1.mc s2.mc s3.mc
を実行すると、カレントパスにある s1.mc と s2.mc と s3.mc の3つのソース
ファイルがコンパイルされて、その各中間コードのモジュールが、カレントパス
を基点に ..\lib のディレクトリー内の slib.mx というモジュールファイルに
まとめて格納されます。この時、当モジュールの説明文は、"string library"
になります。