10
解释///(发音为“斜杠”)
因为我们无法获得足够多的深奥语言高尔夫,我们可以吗? /// —发音 斜杠)是一种有趣的小语言,它基于s///Perl成名的正则表达式替换功能。它仅包含两个特殊字符slash /和反斜杠\。您可以在esolangs Wiki上找到完整的文章,但我将在下面复制对语言的描述以及一些示例。 简而言之,它通过/pattern/repl/rest在程序中进行标识并进行尽可能多的替换来起作用。除特殊字符外,没有其他特殊字符/和,\::/划定程序中的模式和替换,同时\允许您在代码中插入文字/或\字符。值得注意的是,这些不是正则表达式,只是纯字符串替换。 您面临的挑战是为///语言生成解释器,作为一个读取STDIN的程序或一个带有字符串参数的函数,并使用尽可能少的字符。 您可以使用///以外的任何语言。您不得使用任何解释///的库;但是,您可以使用正则表达式,正则表达式库或字符串匹配库。 执行 有四种状态,分别是print,pattern,replace和replace。在每个国家中,除了替代: 如果程序为空,则暂停执行。 否则,如果第一个字符为\,则对下一个字符(如果存在)进行操作,然后从程序中删除这两个字符。 否则,如果第一个字符是 /,请将其删除,然后更改为下一个状态。 否则,对第一个字符进行处理,然后将其从程序中删除。 重复。 状态依次遍历print,pattern,replace和替换。 在打印模式下,“执行某些操作”表示输出字符。 在模式模式下,“执行某些操作”意味着将字符添加到当前模式。 在替换模式下,“执行某些操作”意味着将字符添加到当前替换中。 在替换模式下,您遵循一组不同的规则。重复用程序中的当前替换替换当前模式的第一个匹配项,直到不再有替换可用为止。此时,清除“模式和替换”并返回打印模式。 在程序中/foo/foobar/foo foo foo,发生以下情况: /foo/foobar/foo foo foo foo foo foo foobar foo foo foobarbar foo foo foobarbarbar foo foo ... 这将永远循环,并且永远不会退出替换模式。同样,如果Pattern为空,则空字符串的第一个匹配项(在程序开头)总是匹配的,因此替换模式永远循环,永不停止。 例子 no 输出:no。 / world! world!/Hello,/ world! world! …