想要制作一些领域特定语言(DSL)进行练习,首先想到的是编写Brainfuck的解释器或编译器。第一个想法是重写函数,例如它们将表现为 Brainfuck 命令:">"
, "<"
, "+"
, "-"
, "."
, ","
, "["
, "]"
. 不幸的是,您不能将函数作为"."
.
有没有更好的解决方案来用 Scala 编写它?
想要制作一些领域特定语言(DSL)进行练习,首先想到的是编写Brainfuck的解释器或编译器。第一个想法是重写函数,例如它们将表现为 Brainfuck 命令:">"
, "<"
, "+"
, "-"
, "."
, ","
, "["
, "]"
. 不幸的是,您不能将函数作为"."
.
有没有更好的解决方案来用 Scala 编写它?
你没有在你的问题中具体说这个,但是当你说 DSL 时,你的意思是Internal DSL?
内部 DSL 很棒,但从根本上说,您总是受到您尝试使用的语言语法的限制。Scala 是一种特别适合编写内部 DSL 的语言,因为它具有简单而灵活的语法。但它并不是无限灵活的。
您可能想要探索的其他途径可能是:
我想你知道这个例子。
这个例子也是Mikaël Mayer在评论中提出的。
我编写了一个使用 Scala 解析器组合器的 BrainFuck 解释器。如果有帮助,源代码在这里。