sitelogo
JavaからMINERVAへのインタフェース

MINERVAをあなたのJavaプログラムへ組み込む:

参考: the javadoc style documentatio n.

MINERVAをJavaクラス/メソッドによって拡張したい場合には、 MINERVA Extender minervax を使用することをお勧めします。 このプログラムにより、class Minervaの呼び出し方の仕様を示す新しいメイン プログラムを生成することもできます。

他のツールで書かれたGUIを使用し、ユーザ対話を行なわない一種のスレッド としてclass Minerva使用したい場合、直接Minervaを起動し、 execute により、呼出と結果を得ることができます。

起動時には、必要なパラメータを与えます(minerva*の 各スクリプトを例として参照して下さい)。Minervaをアプレットから呼び出す場 合、そのアプレットも与えます。

class Minervaは、2つのコンストラクターがあります。 

     public Minerva(String[] args)
     public Minerva(Applet applet, String[] args)
 

前者は、便宜的なもので、Minerva(null,args)を呼び出すだけです。 アプレットから呼び出す場合には、後者を使用して下さい。

例:

public class Test extends Applet {
      Minerva minerva = null;
      ...
      public void start() {
          String args = new String[2];
          args[0] = "-c";
          args[1] = "/minerva/minervagui.mca";
          minerva = new Minerva(this, args);
          ...
      }
      ...
  }

JavaからMINERVAへのインタフェースは以下のクラスを知っています。 (上位クラスの絶対的なメソッドは、もちろんサブクラスでも定義されていますので 再びリストされはしません。)

以下に、JavaからMINERVAのインタフェースの呼びだしについて説明します。 executeのメソッドは、 MinervaTermタイプのオブジェクト を期待します。executeのメソッドはJavaに結果を返します。

executeの呼びだしが行なわれれば、 MinervaVariableのすべてのタイプのオブジェクトは、 この呼びだしの終了時に値をもたされます。(setValue())

例:

import com.ifcomputer.minerva.*;

public class Test {

private static MinervaTerm makeChar(char c) { return new MinervaAtom(String.valueOf(c)); }

private static MinervaTerm makeList(String s) { MinervaTerm list = new MinervaAtom("[]"); for ( int i = s.length()-1; i >= 0; --i ) list = new MinervaList(makeChar(s.charAt(i)), list); return list; }

public static void main(String args[]) throws Exception { Minerva minerva = new Minerva(args); MinervaVariable v = new MinervaVariable(); MinervaTerm l1 = makeList("abc"); MinervaTerm l2 = makeList("def"); if ( minerva.execute("append", l1, l2, v) ) { System.out.println("append("+l1+", "+l2+") = "+v.getValue()); } else { System.out.println("execution failed"); } } }


戻る 続く..
冒頭へ managed with ubiCMS