2012-01-30 2 views
7

실습을 위해 도메인 특정 언어 (DSL)를 만들고 싶다면 Brainfuck의 인터프리터 또는 컴파일러를 작성하는 것이 가장 좋습니다. ">", "<", "+", "-", ".", ",", "[", "]"을 : 첫 번째 아이디어는 브레인 퍽 명령대로이 동작하는 등의 기능을 재정의했다. 불행히도 당신은 "."으로 기능을 decalare 수 없습니다.스칼라에서 브레인 팩 컴파일러

스칼라에 더 좋은 해결책이 있습니까?

답변

6

질문에 특별히 말하지는 않았지만 DSL이라고 말하면 Internal DSL을 의미합니까?

내부 DSL은 훌륭하지만 근본적으로 항상 사용하려는 언어의 구문에 의해 제한됩니다. 스칼라는 간단하고 유연한 구문을 가지고 있기 때문에 내부 DSL 작성에 특히 좋은 언어입니다. 그러나 그것은 무한히 유연하지 않습니다. 당신이 탐험 할 수 있습니다

다른 도로는 다음과 같을 수 있습니다

  1. 대신 다른 기호를 선택합니다. "". 스칼라는 유니 코드 식별자를 지원할 수 있으므로 그 길을 내려가는 것을 좋아한다면 아마도 "∙"를 사용할 수있을 것입니다.
  2. 대신 External DSL을 만드시겠습니까?
5

당신이 이것을 알고 있다고 생각합니다 example.

또한이 exampleMikaël Mayer에 의해 제안되었습니다.

+0

더 세련된 방법이 있습니까? –

+0

잘 모르겠다. 스칼라 공식 사이트에서 그 특별한 예를 상기 해 보았다. – fiction

1

저는 스칼라 파서 결합자를 사용하는 BrainFuck 인터프리터를 작성했습니다. 도움이 될만한 경우 소스 코드는 here입니다.