5

我是这种语言的新手,我正在 scala 中构建 Brainfuck 解释器我面临一个问题,如果内存索引的值大于 127,我应该打印什么?如果值大于 127,那么真正的脑残解释器会打印什么?例如
,当“。”时,内存[索引] = 178。(打印命令)被称为 Brainfuck iterpreter print 应该做什么?
我在 ideone.com 上编译了一些代码,但显示运行时错误。
对于以下代码:

++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++[+.<-]

4

2 回答 2

3

使用单元格中的任何值调用的原始实现.putchar()unsigned char

...
case '.': putchar(a[p]); fflush(stdout); break;
...

这意味着 128-255 字符的显示方式取决于终端使用的编码。如果我将我的设置为CP437,字符 32-255 如下所示:

示例输出

在您的情况下,Scala 的toChar数字方法听起来应该可以满足您的需求;另外,也许 ideone 对打印扩展的 ASCII 很奇怪。

于 2014-02-15T14:48:28.167 回答
2

没有完整的语言规范,但在大多数解释器中,增加一个保持最大值的单元格(使用 + 命令)会将其带到最小值,反之亦然。

于 2014-02-15T14:37:15.997 回答