2012-04-22 1 views
19

하스켈에서 다른 언어 용 코드를 생성하고 싶지만이 문제에 접근하는 방법은 에 의아해합니다. 하스켈에서 추상적이고 우아한 표현을 찾고 있는데 이는 코드 생성에도 유용하다. 해당 언어는 InstallScript입니다 (언어 참조 설명서의 link). 누군가 Haskell 유형의 InstallScript에 사용 된 언어 구문을 캡처하는 방법에 대한 힌트를 제공하거나 (예를 들면 어떨까요?) 영감을 얻기 위해 유사한 프로젝트를 가리킬 수 있습니까?하스켈에서 다른 언어 용 코드 생성

+6

객체 언어의 추상 구문 트리 (InstallScript)를 표현하고 적합한 예쁜 프린터를 갖기 위해 추상 유형을 정의하고 구현하면됩니다. –

+0

@BasileStarynkevitch :이 작업을 수행하는 프로젝트를 가리 키시겠습니까? 나는 예제와 똑똑한 트릭을 찾고 있는데 ... – akosch

+5

[nsis 패키지] (http://hackage.haskell.org/package/nsis-0.1.2)를보고 싶을 수도있다. – bzn

답변

17

하스켈에서 해결해야 할 문제는 classic입니다.

  • 쓰기 A A 파서를 정의
    • 는 보너스 포인트

    (코드를 생성하는) 꽤 프린터를 정의 언어에 대한 추상 구문 트리를 정의 좋은 하스켈 combinator 라이브러리는 하스켈에서 타겟을 임베드 할 수있게 해준다.

  • 추상 구문에 대한 최적화 도구 작성

Hackage에 many, many examples이 있습니다 (예 : this one).