我正在写一个软件,用标准的控制流程从用户那里获取命令序列(即用户可以嵌套他想要的命令):
cmd1
cmd2
cmd3
loop.1:
cmd1
cmd2
cmd3
loop.2
cmd1
cmd2
endloop.2
cmd4
cmd5
endloop.1你是否碰巧知道一种在嵌套结构中保持顺序的数据结构?基本上,什么数据结构用于存储任何语言的输入程序?你知道Python中的等价物吗?我正在尝试使用OrderedDict(),但应该有一个更个性化的。
发布于 2011-11-22 04:10:37
使用(间接)嵌套列表。我假设你有一个类
class Command(object):
def execute(self):
# whatever为您提供基本命令。为循环创建一个子类:
class Loop(Command):
def __init__(self, condition, cmds):
self.body = cmds # list of Commands
self.condition = condition
def execute(self):
while self.condition.execute():
for x in self.body:
x.execute()发布于 2011-11-22 04:06:59
你可以使用二叉树。如果您不想在python中实现这样的树,您可以伪造这样一个树的顺序遍历,并将其存储在列表中。
发布于 2011-11-22 04:52:04
它被称为Abstract Syntax Tree (或简称为AST )。
这是..。一棵树,所以它可以被建模为list-of-list,但您可能希望使用具有更多结构的东西(这取决于您希望AST的“类型”程度)。
我认为每个Node都有一个对象,每个Node都有一个'Operation‘和零个或多个叶子(即子表达式或子语句)。
对于更严格类型的结构,除了常见的“块”、“主体”之外,所有内容的叶子#都将受到限制(即使用元组),而“主体”只是语句列表,即函数或if/while/for body。
https://stackoverflow.com/questions/8217831
复制相似问题