scala中的Brainfuck编译器

Rin*_*nov 7 compiler-construction interpreter scala brainfuck

想要练习一些领域特定语言(DSL),首先想到的是编写Brainfuck的解释器或编译器.最初的想法是覆盖这样的功能,因为它们将表现为Brainfuck命令:">","<","+","-",".",",","[","]".不幸的是你无法将decalare功能视为".".

在Scala中编写它有更好的解决方案吗?

Pau*_*her 6

你没有在你的问题中具体说明,但似乎当你说DSL时,你的意思是内部DSL

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

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

  1. 选择不同的符号而不是".".Scala可以支持Unicode标识符,所以如果你喜欢走这条路,也许你可以使用"∙"?
  2. 改为创建外部DSL


fic*_*ion 5

我想你知道这个例子.

这个例子也是由MikaëlMayer在评论中提出的.