next up previous contents index
Next: matxのオプション Up: プログラムの作り方とその実行方法 Previous: プログラムの作り方とその実行方法

matxを用いたプログラムの実行

インタプリタmatxを用いてプログラムを実行するには,少なくとも 以下の5つの方法がある。 
1.
matxの引数にソースファイルを指定して実行すると, ソースファイルは指定された順番に解釈実行される。   (この時,ソースファイルの拡張子mmは省略できる。) すなわち,一番最後のファイルの最終行に実行したい関数名を ``funcname();''のように追加すれば,その関数を実行する ことができる。

[例] 最後のソースファイルsub3.mmの最終行に``main();''を 追加して実行。



% emacs sub3.mm
% matx main.mm sub1.mm sub2.mm sub3.mm


2.
matxの引数にオプション-eに続けてMATXのプログラム を書くと,そのプログラムを実行できる。 ファイルの最終行に実行したい関数名を書く代りに, ``-e 'funcname()'''のようにコマンドラインに書ける。 なお,オプション-eはコマンドラインの任意の場所で使える。  

[例] 最後のソースファイルsub3.mmの最終行に``main();''を 追加する代りに,コマンドラインに``-e 'main()'''と書く。


% matx main.mm sub1.mm sub2.mm sub3.mm -e 'main()'


3.
matxは,引数に指定された全ソースファイルを解釈実行すると, すぐに終了するが,引数の最後に``-''があると,全ソースファイルを 解釈した後,インタラクティブ・モードになり,プロンプトを表示する。     つまり,インタラクティブ・モードになった後で実行したい関数名を ``funcname();''と入力すれば,その関数を実行することができる。  

[例] 引数の最後の``-''を付けて実行し,インタラクティブ・モード で起動した後,``main();''と入力する。


% matx main.mm sub1.mm sub2.mm sub3.mm -

MaTX (1) main();


4.
matxを引数なしで実行すると,インタラクティブ・モードで 起動されプロンプトを表示するので,load命令でmmファイル を読み込んで,関数を実行することができる。 (この時,ファイルの拡張子を省略するとmmとなる。)   

[例] あらかじめ,ソースファイルsub3.mmの最終行に``main();'' を追加しておく。matxを引数なしで実行し,インタラクティブ・モードで 起動して,load命令でソースファイルを読み込む。このとき,sub3.mmは, 最後に読み込む。


% emacs sub3.mm
% matx

MaTX (1) load "main", "sub1", "sub2", "sub3"


5.
宣言だけされて定義されていない関数が呼び出されると, 関数名と同じmmファイルが探索されて読み込まれるので, 実行したい関数を宣言した後,``funcname();''と入力すれば, 望みの関数を実行することができる。 ただし,この機能を利用するには,関数名とmmファイルのファイル名 が一致していなければならない。

[例] 実行したい関数``main()''を宣言して,関数を直接呼び出す。


% emacs main.mm sub1.mm sub2.mm sub3.mm
% matx

MaTX (1) void main();
MaTX (2) main();


6.
UNIXのシェルスクリプトやPerlのスクリプトと同じように、mmファイルの 先頭に``#! /usr/local/bin/matx''を追加して、ファイルに 実行許可の属性を与えることによって、通常のUNIXのコマンドと同様に mmファイルを実行させることができる。ただし、Cプリプロセッサの機能を 使うことができない。    

[例] 実行したいmmファイルの先頭に``#! /usr/local/bin/matx''を追加して、 実行許可の属性を与える。スクリプトの実行はコマンドラインから行なう。  



#! /usr/local/bin/matx -nocpp

Func void main()
{
  Matrix a, b, c;

  read a, b;
  c = a + b;
  prnit a, b, c;
}

main();




% emacs mmtest
% chmod a+x mmtest
% ./mmtest




Masanobu KOGA 平成10年8月19日