2014-02-15 73 views
2

我是新來的這種語言,我在scala中構建brainfuck解釋器我面臨一個問題如果內存索引值大於127,我應該打印什麼? 如果值大於127,真正的brainfuck interpreter會打印什麼? 例如
memory [index] = 178 當「。」 (打印命令)被稱爲brainfuck iterpreter應該打印什麼?
我在ideone.com上編譯了一些代碼,但它顯示運行時錯誤。
的follwing代碼:
在brainfuck中打印字符

+++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++ [+。 < - ]

回答

1

沒有完整的語言規範,但是在大多數解釋器中,遞增一個保持其最大值的單元格(使用+命令)會使其達到其最小值並反之。

1

original implementation.只是調用putchar()與任何unsigned char值是在單元格:

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

這意味着字符128-255顯示瞭如何取決於什麼編碼您的終端使用。如果我設置礦CP437,人物32-255這個樣子:

example output

在你的情況,Scala的toChar上號的方法聽起來像它應該做你想要什麼;另外,也許ideone對於打印擴展ASCII只是很奇怪。

+1

是@nooodl ideone顯示運行時錯誤,可能不支持這些字符。不管怎樣,謝謝 :) – user2124441