コマンドラインからコンパイル

pnutscコマンド

C:\> pnutsc { -d directory | -o output_jar_file } { -v } { -main mainClass { -m moduleName } } { -prefix name }{ -no_proxy } { { -C base_directory } script_file | input_jar_file } ...

pnutscコマンドは、指定されたscript_fileまたはinput_jar_fileに含まれるスクリプトファイルをコンパイルします。

-o output_jar_file が指定された場合、コンパイルされたクラスファイルは output_jar_fileにの中に保存されます。output_jar_fileがすでにあれば、コンパイルされたクラスはそのJARファイルに追加されます。

-o が指定されない場合、コンパイルされたクラスファイルは -dの後のdirectory に保存されます。-d が指定されない場合は、カレントディレクトリに保存されます。

-v は冗長な表示を行うモードを意味します。生成されたクラス名やクラスファイル名が表示されます。

-no_proxy が指定された場合、生成されたコードは、pnuts.compiler パッケージに依存しないようになります。ただし、メソッド呼び出しが最適化されません。

-prefix name が設定される場合は、その値がクラス名のプレフィックス(接頭語)になります。

D:\pnuts> pnutsc -o pnuts-precompiled.jar pnuts/util/*.pnut pnuts/lib/*.pnut

-Cオプションが指定されると、カレントディレクトリがbase_directoryに変更されたのちにscript_filesがコンパイルされます。

-main オプションをつけると、main() メソッドとrun(Context)メソッドが定義されるmainClassが生成されます。

public class mainClass extends Runtime {
   public Object run(Context ctx){
      ctx.usePackage(module1);
      ctx.usePackage(module2);
      ...
      new className1().run((Context)ctx.clone());
      new className2().run((Context)ctx.clone());
      ...
   }
   public static void main(String args[]){
      Pnuts.set("$args", args);
      new mainClass().run(new Context());
   }
 }
例: hello.pnut
println("hello")
C:\> pnutsc -o hello.jar -main Hello -m pnuts.lib hello.pnut
C:\> java -classpath "hello.jar;pnuts.jar;pnuts-modules.jar" Hello