2

私は Java と clojure がまったく初めてです。しかし、以前に Common Lisp を使った経験があるので、clojure を試してみようと思いました。私はいくつかの非常に基本的なことを理解することができません。

これが実際の Java コードです。

import syntaxtree.*;
import visitor.*;

public class Main {
    public static void main(String [] args) {
    try {
        Node root = new MicroJavaParser(System.in).Goal();
        System.out.println("Program parsed successfully");
    }
    catch (ParseException e) {
        System.out.println(e.toString());
    }
    }
} 

このコードを実行すると、期待どおりの結果が得られます。

└──╼ java Main < ../input/Factorial.java 
Program parsed successfully

Clojureで私はこれを試しました:

(ns clj-assign2.core)

(defn -main
  []
  (def root
    (.Goal
     (MicroJavaParser. (. System in))))
  (println "Successfully parsed"))

ただし、このコードを実行すると、次の例外が発生します。

└──╼ lein run < ../assign2/input/Factorial.java 
Exception in thread "main" java.lang.IllegalArgumentException: No matching field found: Goal for class MicroJavaParser
    at clojure.lang.Reflector.getInstanceField(Reflector.java:271)
    at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:300)
    at clj_assign2.core$_main.invoke(core.clj:7)
< --- snipped --- >

ここで何が間違っていますか?

4

1 に答える 1

1

もしかしたら、あなたの clojure プログラムに import ステートメントが欠けているのではないでしょうか?

于 2013-02-12T18:21:42.027 に答える