Скриптинг от Scala - PullRequest
       57

Скриптинг от Scala

1 голос
/ 06 октября 2011

У меня есть небольшой проект с редактором, некоторые особые потребности, которые у меня были, и которые я взломал вместе днем.Сотрудник посмотрел через мое плечо (разве вы не ненавидите это?) И сказал: «О, аккуратно, но может ли он сделать X?»

Итак, чтобы объединить мою вечную потребность изучать новые вещи иЧтобы включить некоторые расширения в этом маленьком редакторе, я хочу добавить туда несколько простых функций манипуляции.И поэтому я хочу включить некоторые сценарии.

Я нашел несколько учебных пособий по ScriptEngine , это не проблема.Проблема в том, что кажется, что он поддерживает только JavaScript через Rhino.У меня все они установлены через apt-get: JRuby, Jython, Groovy, но ScriptEngine их не знает.

Что бы я предпочел, это сбросить зависимость в моем build.sbt.Может быть, кто-то знает способ сделать это правильно?

И если я возобновлю работу с JavaScript, могу ли я с уверенностью предположить, что Rhino установлен на каждую машину с JDK?

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Вот статья о встраивании интерпретатора Scala.Однако это может быть излишним из-за того, что вы делаете.

http://suereth.blogspot.com/2009/04/embedding-scala-interpreter.html

Вы также можете посмотреть скалярные документы для переводчика напрямую.

http://www.scala -lang.org / archives / downloads / distrib / files / nightly / docs / compiler / scala / tools / nsc / interpreter / package.html

Если это действительно простые функции манипуляции, вы можетенаписать свой собственный язык с помощью комбинаторов парсера.

http://www.codecommit.com/blog/scala/the-magic-behind-parser-combinators

0 голосов
/ 06 октября 2011

Добавьте немного Groovy в ваши Java-приложения - это учебное пособие developerWorks, которое не зависит от ScriptEngine, а вместо этого использует groovy.lang.GroovyClassLoader - я собирался адаптировать его для Scala, но не получил от него никаких результатовк нему еще (дайте мне знать, как это происходит).

При адаптации к Scala помните, что:

ClassLoader parent = CLEmbedGroovy.class.getClassLoader();

написано:

val parent: ClassLoader = classOf[CLEmbedGroovy].getClassLoader() 

ДалееВ этой статье есть и другие интересные варианты, такие как GroovyScriptEngine.SBT-мудрый я думаю ( источник ) вам просто нужно зайти:

val groovyAll1.0Jsr = "groovy" % "groovy-all-1.0-jsr" % "05"

Удачи!

...