8

想要制作一些领域特定语言(DSL)进行练习,首先想到的是编写Brainfuck的解释器或编译器。第一个想法是重写函数,例如它们将表现为 Brainfuck 命令:">", "<", "+", "-", ".", ",", "[", "]". 不幸的是,您不能将函数作为".".

有没有更好的解决方案来用 Scala 编写它?

4

3 回答 3

6

你没有在你的问题中具体说这个,但是当你说 DSL 时,你的意思是Internal DSL

内部 DSL 很棒,但从根本上说,您总是受到您尝试使用的语言语法的限制。Scala 是一种特别适合编写内部 DSL 的语言,因为它具有简单而灵活的语法。但它并不是无限灵活的。

您可能想要探索的其他途径可能是:

  1. 选择不同的符号而不是“.”。Scala 可以支持 Unicode 标识符,所以如果你想走这条路,也许你可以使用“∙”?
  2. 改为创建外部 DSL ?
于 2012-01-30T13:39:45.703 回答
5

我想你知道这个例子

这个例子也是Mikaël Mayer在评论中提出的。

于 2012-01-30T13:07:45.473 回答
1

我编写了一个使用 Scala 解析器组合器的 BrainFuck 解释器。如果有帮助,源代码在这里。

于 2012-01-30T13:47:13.777 回答