首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储程序序列的数据结构- Python

存储程序序列的数据结构- Python
EN

Stack Overflow用户
提问于 2011-11-22 04:05:10
回答 3查看 230关注 0票数 2

我正在写一个软件,用标准的控制流程从用户那里获取命令序列(即用户可以嵌套他想要的命令):

代码语言:javascript
复制
   cmd1
   cmd2
   cmd3
   loop.1:
    cmd1
    cmd2
    cmd3
      loop.2
        cmd1
        cmd2
      endloop.2
    cmd4
    cmd5
   endloop.1

你是否碰巧知道一种在嵌套结构中保持顺序的数据结构?基本上,什么数据结构用于存储任何语言的输入程序?你知道Python中的等价物吗?我正在尝试使用OrderedDict(),但应该有一个更个性化的。

EN

回答 3

Stack Overflow用户

发布于 2011-11-22 04:10:37

使用(间接)嵌套列表。我假设你有一个类

代码语言:javascript
复制
class Command(object):
    def execute(self):
        # whatever

为您提供基本命令。为循环创建一个子类:

代码语言:javascript
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2011-11-22 04:06:59

你可以使用二叉树。如果您不想在python中实现这样的树,您可以伪造这样一个树的顺序遍历,并将其存储在列表中。

票数 0
EN

Stack Overflow用户

发布于 2011-11-22 04:52:04

它被称为Abstract Syntax Tree (或简称为AST )。

这是..。一棵树,所以它可以被建模为list-of-list,但您可能希望使用具有更多结构的东西(这取决于您希望AST的“类型”程度)。

我认为每个Node都有一个对象,每个Node都有一个'Operation‘和零个或多个叶子(即子表达式或子语句)。

对于更严格类型的结构,除了常见的“块”、“主体”之外,所有内容的叶子#都将受到限制(即使用元组),而“主体”只是语句列表,即函数或if/while/for body。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8217831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档