[发明专利]带有增量改变的高效不可变句法表示有效
申请号: | 201080060863.8 | 申请日: | 2010-12-31 |
公开(公告)号: | CN102696026A | 公开(公告)日: | 2012-09-26 |
发明(设计)人: | M·J·沃伦;A·Y·阿哈罗尼;M·托格森;R·帕凯;N·M·加夫特;J·帕森斯;D·N·舒艾奇;A·V·青高兹;P·戈尔德;K·皮尔希-比森;刘凯玲 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F17/00 | 分类号: | G06F17/00;G06F17/27 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 蔡悦 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 带有 增量 改变 高效 可变 句法 表示 | ||
背景技术
在计算机科学中,树是被链接的节点的分层数据结构。树是非循环连接图,其中该树中的每一节点具有零个或更多子节点以及最多一个父节点。节点可包含值、条件,或可表示分开的数据结构(诸如另一树)。按照惯例,子节点在树中位于其父母“之下”,就是说,计算机科学的树(不像自然的树)是向下生长而非向上生长。具有孩子的节点被称为该孩子的父节点、其祖先或其上级节点。
树在计算机中由存储器中的节点以及表示该树中边缘的引用来表示。每一父节点具有对其子节点的引用,但并非每一子节点都具有对其父节点的引用。没有孩子的节点被称为叶子节点或端节点。节点的高度是从该节点至叶子的最长向下路径的长度。根的高度是该树的高度。节点的深度是至其根的路径(即,其根路径)长度。树中最上面的节点被称为根节点。根节点不具有父母。对树的操作通常在根节点处开始。树中的任何节点可通过跟随各节点之间的指针或链接从根节点到达。当到达树中特定节点时,操作被频繁地执行。中间节点是树中具有子节点的任何节点。由此,因为叶子节点没有子节点,所以叶子节点不是中间节点。
树中每一节点可被看作从该节点传下来的子树的根节点。术语“子树”指的是包含树中一节点以及树中该节点的所有子孙的树。对应于根节点的子树是整个树;对应于任何其他节点的子树被称为真子树。树可以用许多不同的方式来表示。某些常见表示将节点表示成被分配在堆(不要与堆数据结构混淆)上带有指向其子节点、其父亲、或指向子节点和父节点两者的指针的记录,或被表示成阵列中的项,该阵列(例如,二进制堆)具有由各节点在阵列中的位置所确定的各节点之间的关系。
可通过跟随一系列父节点和这些父节点的子节点之间的连接或指针来对树进行遍历。前序遍历在其到达父节点的子节点之前抵达该父节点。后序遍历是其中在遍历父节点之前遍历该父节点的子节点的一种遍历。
解析树或句法树通常是根据某些形式语法来表示串的句法结构的有序的有根树。在解析树中,内部节点由语法的非终端来标记,而叶子节点由语法的终端来标记。产生这些树的一种类型的程序被称为解析器。解析树或句法树经常在计算机编程语言的处理期间被生成。
发明内容
不可变的树可允许多线程上的多个客户机使用同一树,而不会有观察到由其他线程同时造成的改变的风险。此外,能够使用并重复使用树的各部分使得处理更为高效,因为当只有树的小部分被改变时整个树不必一次又一次地被创建。部分的树可在单向树中被重复使用,单向树是其中该树的节点仅指向或是直接在其之下或是直接在其之上的一个或多个节点的一种树。即,在只在一个方向上具有指针的树中,根可指向直接在其之下的节点,且这些节点中的每一个可指向直接在其之下的一个或多个节点(依次类推),但树中任何节点都不指向其父节点和其子节点两者。这是通常情况,然而,在两个方向上都具有指针(双向指针)的树比具有单向指针的树有用得多。传统的具有双向指针的树不能重复使用,而不能重复使用的树在处理资源方面成本较高,且因此通常较不高效。
为使消费者能够创建由多个消费者使用的新版本的树而不牺牲高效性或数据完整性,创建了包括第一不可变私人树和第二公共树的数据结构。公共树控制对私人树的访问。私人树和公共树的结合使得数据结构中能够存在向上引用和向下引用,且使得不可变(只读或不能改变的)和可改变的特性能够在同一数据结构中共存。数据结构的部分可在其他树数据结构中被重复使用。私人树保留了允许其被重新组装和重复使用的相对信息。公共树保留了消费者专用信息,且使得工具能够搜索并将私人树中的子树定位目标。公共树(除根节点之外)的构建可被推迟,直到公共树中的节点被请求。响应于对访问私人树中节点的消费者请求,可按需构建公共树。
上述数据结构可用于以允许双向指针的方式来呈现编译器生成的诸如解析树、句法树、语义树和绑定树之类的树,要呈现的消费者专用且相对的位置是不可变的但是允许树的高效创建和进化,从而创建数据结构的只读树的新版本而无需重新创建整个树。
提供本概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
在附图中:
图1a是本领域已知的树数据结构的示例的框图;
图1b是本领域已知的树数据结构的另一示例的框图;
图1c是本领域已知的树数据结构的另一示例的框图;
图1d示出了根据此处所公开的主题的各方面的用于带有增量改变的高效不可变句法表示的系统100的示例;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201080060863.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:半导体器件
- 下一篇:现金处理装置及现金处理系统