[SCALA] 프로그래밍 방식으로 스칼라 컴파일러를 호출하는 방법?
SCALA프로그래밍 방식으로 스칼라 컴파일러를 호출하는 방법?
내 스칼라 코드가 입력으로 스칼라 수업을 컴파일하고 클래스를 실행합니다. 어떻게 프로그래밍 스칼라 컴파일러를 호출 할 수 있습니다? 나는, 즉 2.10 최신 스칼라 버전을 사용하는 것입니다.
해결법
-
==============================
1.나는 스칼라 컴파일러를 호출하는 적절한 방법 개요에 설명 반사 API를 통해 그 일을 생각합니다. 특히, '기호, 나무, 그리고 유형'도구 상자를 사용하여 트리에 문자열을 구문 분석에 대한 회담 도구 상자 섹션에 구문 분석을 통해 트리 만들기. 할 수 있습니다 후 평가 후면 호출 () 등
나는 스칼라 컴파일러를 호출하는 적절한 방법 개요에 설명 반사 API를 통해 그 일을 생각합니다. 특히, '기호, 나무, 그리고 유형'도구 상자를 사용하여 트리에 문자열을 구문 분석에 대한 회담 도구 상자 섹션에 구문 분석을 통해 트리 만들기. 할 수 있습니다 후 평가 후면 호출 () 등
Shyamendra Solanki 쓴하지만, 현실에서 당신은 더 많은 작업 수행 얻을 scalac의 세계를 구동 할 수있다. 내가 예를 들어 통합 테스트를 수행하는 샘플 코드로 생성 된 코드를 컴파일 할 수 있도록 내가 CompilerMatcher를 작성했습니다.
당신은 코드를 평가하기 위해 REPL의 IMain를 호출 할 수 있습니다 (당신이 뭔가를하려는 경우이 또한 CompilerMatcher 위에서 사용할 수 있는지 스칼라 2.10와 작품) :
val main = new IMain(s) { def lastReq = prevRequestList.last } main.compileSources(files.map(toSourceFile(_)): _*) code map { c => main.interpret(c) match { case IR.Error => sys.error("Error interpreting %s" format (c)) case _ => }} val holder = allCatch opt { main.lastReq.lineRep.call("$result") }
이는 2009 년 조쉬 Suereth 백에 의해 스칼라 통역 게시물을 포함하기에 증명되었다.
-
==============================
2.이 클래스는 컴파일 (파일 test.scala에서) 실행하기
이 클래스는 컴파일 (파일 test.scala에서) 실행하기
class Test { println ("Hello World!") }
(같은 디렉토리에) // compileAndRun.scala
import scala.tools.nsc._ import java.io._ val g = new Global(new Settings()) val run = new g.Run run.compile(List("test.scala")) // invoke compiler. it creates Test.class. val classLoader = new java.net.URLClassLoader( Array(new File(".").toURI.toURL), // Using current directory. this.getClass.getClassLoader) val clazz = classLoader.loadClass("Test") // load class clazz.newInstance // create an instance, which will print Hello World.
from https://stackoverflow.com/questions/20322543/how-to-invoke-the-scala-compiler-programmatically by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 스칼라 2.12 또는 2.13의 야간 빌드를 사용하는 SBT를 알 수 있습니까? (0) | 2019.11.21 |
---|---|
[SCALA] 왼쪽 안티 스파크에 참여? (0) | 2019.11.21 |
[SCALA] 합니까 스칼라는 C #을 수율에 해당하는가? (0) | 2019.11.21 |
[SCALA] 왜 목록 반군하지만 서열은 그렇지? (0) | 2019.11.21 |
[SCALA] 스칼라에서 보간 문자열에 큰 따옴표를 삽입하는 방법 (0) | 2019.11.21 |