10
为我的深奥语言撰写翻译
我想过深奥的语言跳线。稍后您将了解原因。 它以字节为单元的随机存取存储器工作。RAM是零索引的,最初填充零。 尝试使用负索引访问单元时,将显示错误并终止程序。 尝试从比上一个更大的索引处读取时,应返回零。 尝试以比上一个更大的索引进行写入时,RAM应该增加到1024的倍数,并且新单元格要填充零(从技术上讲,您可以将RAM不能增加到1024的倍数,原因是性能得到了提高,因此如果花费很多字符,不能做到1024的倍数)。 程序还具有指向RAM中单元的指针,该指针最初为零 程序开始执行时,将显示输入字符串的提示(或从命令行参数获取输入,这取决于您)。输入字符串不应包含空字符(零字节)。然后将输入字符串从零索引处开始写入RAM。 当程序结束时,显示带有程序输出的框-RAM的内容从零索引到第一个零字节(不包括在内)。 现在,最有趣的部分是语法。 程序由命令(一元运算符-前缀)及其参数组成。命令和参数可以用空格或换行符分隔,但不是必需的。但是,参数内部的空格无效,例如,# 2 = 4有效但# 2 = 4 4无效。 程序之间可以有注释()。注释不能嵌套-例如,(abc(def)ghi)注释为中(abc(def)。注释可以放在任何地方。 #123 将RAM指针设置为123(任何正十进制整数或零)。 >123 将RAM指针增加123(任何正十进制整数)。 <123 将RAM指针减123(任何正十进制整数)。 =123 在当前单元格中写入123(任何无符号的8位十进制整数)。 +123 将123(任何无符号的8位十进制整数)添加到当前单元格(模256)。 -123 从当前单元格中减去123(任何无符号的8位十进制整数)(取模256)。 :123-“ goto”-转到命令号123(第一个为0)。您只能使用goto来控制程序的流程-它必须跳转-这就是为什么我决定将这种语言称为Jumper。 如果缺少参数,请考虑为><+-命令指定1 或为0 #=:。 此外,还有命令修饰符- ?(命令前缀),仅当当前单元格不为零时才执行下一个命令,否则跳过该命令。可以应用于任何命令。 例如,?:17如果当前单元格不为零,则-转到命令17。 如果程序无效或在运行期间发生错误,则会显示消息“错误”。因为是CodeGolf,所以这样的短消息就可以了。 你的任务 为此语言编写最短的口译员。 一些测试程序 (prints "Hello world!" regardless of input) =72>=101>=108>=108>=111>=32>=119>=111>=114>=108>=100>=33>= (appends …