next up previous
Next: 1 インタプリタの構造 Scheme.java Up: Software IV Top

ソフトウェア特論 講義資料
JavaによるScheme言語処理系: Jscheme

稲葉 雅幸

人工知能プログラムをLispで記述した本 ``Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'' (MIT Press, ISBN 1-55860-191-0, 1992) の著者で有名なPeter Norvig(http://www.norvig.com/) は,Javaで記述したScheme言語インタプリタJschemeを 作りました.(JschemeはもともとSilkという名前でしたが 名前がJschemeに変わりました.) http://www.norvig.com/jscheme.htmlに,その説明とプログラム環境を ダウンロードすることができます.
inaba@jsknote> java jscheme.Scheme
> (car '(a b c))
a
> (exit)

~/lecture/soft402> jar tvf jscheme.jar
     0  2002 META-INF/
    67  2002 META-INF/MANIFEST.MF
     0  2002 jscheme/
   952  2002 jscheme/Closure.java
   435  2002 jscheme/Continuation.java
  3284  2002 jscheme/Environment.java
  5980  2002 jscheme/InputPort.java
  3176  2002 jscheme/JavaMethod.java
  1145  2002 jscheme/Macro.java
  1940  2002 jscheme/Pair.java
 31178  2002 jscheme/Primitive.java
  4398  2002 jscheme/primitives.scm
   591  2002 jscheme/Procedure.java
  5225  2002 jscheme/Scheme.java
  5530  2002 jscheme/SchemePrimitives.java
 10293  2002 jscheme/SchemeUtils.java

~/lecture/soft402> wc jscheme/*.*
     28     131     952 jscheme/Closure.java
     17      53     435 jscheme/Continuation.java
    100     461    3284 jscheme/Environment.java
    210     880    5980 jscheme/InputPort.java
     88     373    3176 jscheme/JavaMethod.java
     33     137    1145 jscheme/Macro.java
     64     278    1940 jscheme/Pair.java
    721    3442   31178 jscheme/Primitive.java
     20      77     591 jscheme/Procedure.java
    152     696    5225 jscheme/Scheme.java
    158     718    5530 jscheme/SchemePrimitives.java
    314    1530   10293 jscheme/SchemeUtils.java
    146     534    4398 jscheme/primitives.scm
   2051    9310   74127 total

% java jscheme.Scheme
> (car '(a b c))
a
> (exit)
というぐあいに,jschemeディレクトリにjscheme.jarを jarコマンドにより展開して javacでコンパイルします.
~/lecture/soft402/jscheme> which javac
/java/jdk1.4/bin/javac
~/lecture/soft402/jscheme> javac *.java
~/lecture/soft402/jscheme> ls
Closure.class	    JavaMethod.java  Scheme.class
Closure.java	    Macro.class      Scheme.java
Continuation.class  Macro.java	     SchemePrimitives.class
Continuation.java   Pair.class	     SchemePrimitives.java
Environment.class   Pair.java	     SchemeUtils.class
Environment.java    Primitive.class  SchemeUtils.java
InputPort.class     Primitive.java   primitives.scm
InputPort.java	    Procedure.class
JavaMethod.class    Procedure.java




generated through LaTeX2HTML. M.Inaba 平成18年5月6日