使用正则表达式的Python Esoteric Interpreter

时间:2013-01-04 01:33:39

标签: python regex esoteric-languages

我继续搞乱ZOMBIE深奥的语言,我一直在使用的翻译器会抛出一些错误。

口译员在这里:http://esolangs.org/wiki/User:Marinus/ZOMBIE_interpreter

规范如下:http://www.dangermouse.net/esoteric/zombie.html

我在Mac上使用终端。 当我通过解释器运行Hello World程序时,

HelloWorld is a zombie
summon
task SayHello
    say "Hello World!"
animate
animate

终端说 -

HelloWorld is a zombie
                     ^
SyntaxError: invalid syntax

我认为解释器中的语法识别正则表达式存在问题,但我对它们没有经验。 以下是我认为应该责备的代码:

comment_re = re.compile("\{.*?\}", re.DOTALL)
declaration_re = re.compile(r'([A-Za-z0-9_\-]*?)\s+is\s+an?\s+(zombie|enslaved undead|' + \
                        r'ghost|restless undead|vampire|free-willed undead' + \
                        r'|demon|djinn)', re.I)

task_re = re.compile("task\s+([A-Za-z0-9_-]*)", re.I)
remember_re = re.compile("remember\s+(.*)", re.I)

string_re = re.compile('".*?"')
integer_re = re.compile('[\-0-9\.]+')

对不起,我不能更具体......任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:3)

对我来说效果很好:

temp $ python zombie.py zombie.z 
Hello World!

我直接从您为解释器发布的链接复制了解释器的源,并将其保存为zombie.py在当前目录(~/temp中,尽管这是无关紧要的)。然后我直接从你的帖子中复制了僵尸HelloWorld程序的源代码,并将其保存为zombie.z(再次在当前目录中)。它会打印Hello World!,因为我认为它应该......

(python2.7,Mac OS X 10.5.8)

SyntaxError让我相信你正试图直接从python运行zombie.z(或者你叫它的任何东西),例如python zombie.z或类似的东西......那是行不通的。


顺便说一句,我认为有趣的是,我自己和前一个问题的海报(独立)选择.z作为zombie源文件的扩展名。必须只是自然的选择...