我需要帮助让翻译工作。这里有'bumpkin'代码作为列表。需要帮助重新安排清单
LET A 1
GOSUB 6 <------ goes to line 6 of 'bumpkin' code (index starts at 1).
PRINT A
PRINT B
END
LET A 2
LET B 3
RETURN <------- returns to GOSUB 6 and continues on down list
技术上有什么GOSUB做的是,它关系到指定的行(在这种情况下,第6行),并继续向下,直到它击中返回,并再次返回到它,并继续进行。
从技术上讲,在列表中以下行方式进入时,GOSUB略微跳过列表,直到它获得一个呼叫信号RETURN,然后返回到GOSUB线并再次继续向下。
主要的问题是我不知道如何做到这一点,并将其附加到一个新的列表,所以它成为一个新的对象列表,所以我可以执行它。由此产生的新名单将是:
LET A 1
LET A 2
LET B 3
PRINT A
PRINT B
END
我很好奇我将如何处理这个问题。我不能使用for循环,因为它会遍历整个'bumpkin'代码并解析它们。我不能跳过任何带有循环的行。
非常感谢!
编辑============================================= ==============编辑
所以,我的继承人Python代码至今:
oldlist = [['LET', 'A', '1'],
['GOSUB', '6'],
['PRINT', 'A'],
['PRINT', 'B'],
['END'],
['LET', 'A', '2'],
['LET', 'B', '3'],
['RETURN'],
['.']]
newlist = []
def NewLister():
ProgramCounter = 0
funcbool = True
while funcbool:
if oldlist[ProgramCounter][0] == 'LET':
newlist.append(oldlist[ProgramCounter])
ProgramCounter += 1
print(newlist)
elif oldlist[ProgramCounter][0] == 'GOSUB':
pass # <---------------------No Idea how to get this working
elif oldlist[ProgramCounter][0] == 'PRINT':
pass
elif oldlist[ProgramCounter][0] == 'END':
pass
这是什么语言? – 2013-07-23 01:26:59
我应该在Python 3.3.2中编写一个解释器,解析你在那里看到的'bumpkin'代码。 为了澄清,'bumpkin'代码就像我的Python解释器需要处理的常规用户输入一样。 – user2559679