Personalmente, starei lontano dall'usare Maven direttamente nonostante sia la risposta accettata.Ecco la semplice definizione del progetto Leiningen che:
- genera sorgenti Java dalla grammatica ANTLR4 (come bonus);
- compila sorgenti Java;
- compila sorgenti Scala (preferisco usare Scala sopra al codice Java ANTLR4 generato poiché è molto più conciso e piacevole con cui lavorare);
- continua con roba Clojure.
(defproject polyglot "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:plugins [[lein-antlr4 "0.1.0-SNAPSHOT"]
[lein-scalac "0.1.0"]]
:dependencies [[org.clojure/clojure "1.5.1"]
[org.antlr/antlr4 "4.0"]
[org.scala-lang/scala-library "2.10.1"]]
:warn-on-reflection true
:antlr4-source-paths ["antlr4"]
:antlr4-options {:package "parser" :listener true}
:antlr4-compile-path "target/antlr4/parser"
:java-source-paths ["target/antlr4/parser" "src/java"]
:scala-source-path "src/scala"
:prep-tasks ["antlr4" "javac" "scalac" "compile"])
Per utilizzare ANTLR4 plugin scaricare e 'Lein install' il lein-antlr4 plugin. Se non ne hai bisogno, rimuovi solo le righe pertinenti dalla definizione del progetto.
Per utilizzare plug-in Scala avevo bisogno di download e cambiare
[org.scala-lang/scala-compiler "2.9.1"]
a
[org.scala-lang/scala-compiler "2.10.1"]
in project.clj del plugin, quindi 'Lein install' localmente. Con la versione di dipendenza più vecchia stavo ottenendo
java.lang.Error: typeConstructor inapplicable for <none>
dal compilatore Scala.
Per la riduzione del codice, non conosco alcuna libreria esistente. Ma tra le macro Clojure e le conversioni implicite di Scala, puoi probabilmente fare molto. – leedm777
Non chiedere più di una domanda su una domanda. Non è giusto per le persone che possono rispondere di una parte ma non dell'altro, e la risposta accettata potrebbe non essere la migliore risposta per un aspetto. –
@ DanielC.Sobral Generalmente, sto cercando di evitare quella situazione. Per questo motivo ho scritto l'ultima riga. Le domande nel corpo descrivono ciò che voglio vedere in quella guida (mi aspettavo il link ad alcuni post o qualsiasi altra cosa). –