2016-08-17 4 views
0

제 생각에 스칼라에서 외부 DSL을 구문 분석하여 (예 : 규칙 표현) &을 간단하게 구문 분석 할 수 있습니다. DSL은 런타임 중에 만 해석 될 수 있지만 성능 향상을 위해 ANTLR과 같은 코드 생성을 지원하지 않는다는 가정이 맞습니까?외부 스칼라 컴파일/코드 생성 DSL

EDIT : 내 Scope 도구/라이브러리 (예 : http://www.artima.com/pins1ed/combinator-parsing.html)를 사용하여이 기능을 구현할 수 있다면 (내 도메인 특정 언어를 만들고 자바/스칼라 코드를 생성 할 수 있는지) 궁금합니다. 전체 구문 분석기/코드 생성기를 스스로 스칼라로 작성하지 마십시오. 타사 도구를 사용하여이 작업을 수행 할 수 있음이 분명하지만 추가 작업을 배우고 추가 종속성을 가져야합니다. 저는 DSL을 구현하는 분야에서 새로운 편인데, ANTLR과 같은 외부 도구를 사용할 때, 그리고 스칼라 (Scala) 온 보드 (on-board)와 관련하여 할 수있는 일이 지금까지 없었습니다.

+0

어떤 종류의 DSL에 대해 이야기하고 있습니까? DSL = 도메인 별 Lanugage, 내 마음에 오는 첫 번째 일. – sebszyller

+0

ANTLR을 Java로 사용할 수 있으므로 Scala에서 ANTLR을 사용할 수없는 이유는 무엇입니까? 스칼라 코드에서 자바 API를 호출 할 수있다 (전용 스칼라 API를 사용하는 것만 큼). –

+0

더 정확한 대답을 위해 – Marco

답변

0

DSL은 런타임 중에 만 해석 될 수 있지만 성능 향상을 위해 ANTLR과 같은 코드 생성을 지원하지 않는다고 가정합니까?

아니요, 잘못되었습니다. Scala가 Turing-complete (즉, 의 어떤 것도이라고 쓸 수 있음)이고, 이 필요하지 않은 경우에도 컴파일러를 작성할 수 있습니다. 컴파일러의 튜링 완전성. 스칼라로 작성 컴파일러의

몇 가지 예는

  • 모든 변화의 스칼라 컴파일러 자체 (스칼라 - JVM, Scala.js, 스칼라 - 기본 스칼라 가상화, Typelevel 스칼라, 버려진 스칼라 포함 .NET, ...)
  • 도티 컴파일러
  • Scalisp
  • Scalispa
  • ... 그리고 많은 다른 사람 ...
+0

thx라는 내 질문을 편집했습니다 .... 내 질문을 더 자세히 편집했습니다. – Marco