提供了用于声明性编程语言的基于树的有向图编程结构的各实施例。在各实施例中,复杂的图结构化数据(在此在一个非限制性实现中被称为“DGraph”)是使用紧凑的人类友好的句法而不使用显式标识符来创作的。在一个非限制性方面,句法包括对遵从关系(也被称为因子分解的关系)的支持。在另一非限制性方面,半结构化图数据是基于树的表示,并且句法包括引用的词法解析或词法作用域确定和/或非局部初始化。
【技术实现步骤摘要】
【国外来华专利技术】
本专利技术一般涉及用于声明性编程语言的基于树的有向图编程结构。背景作为一般背景,在计算机科学中,抽象句法树(AST)是用编程语言编写的一些源代码的句法的树表示或源代码的某一其他功能等效表示。树的每一节点表示出现在源代码中的构造。该树因不表示出现在原始源中的一些构造而是抽象的。这种省略的示例是对圆括号进行编组,因为在AST中,操作数的编组隐含在树结构中。解析器通常将AST作为编译源代码的过程的一部分来构建。一旦构建了 AST,例如语义分析等后续处理就可以向该AST添加附加信息,这可造成基于AST来产生抽象语义图 (ASG)。ASG是比AST更高级的抽象,它可被用来表达表达式或程序的句法结构。在计算机科学中,ASG是被用来表示或导出用例如编程语言等形式语言编写的表达式的语义的数据结构。ASG通常是由浓缩和抽象过程从抽象句法树构造的。例如,浓缩可以是将从其中使用变量的标识符节点起的向后指针(back-pointer)或边添加到表示该变量的声明的节点。抽象,例如,可能需要移除细节,这些细节只在解析时相关而非对语义相关。就此,诸如XML等半结构化数据的当前表示被限于表示树结构。对于XML,表示图结构需要使用诸如XML_ID等显式引用,相对于底层图结构的表示和存储而言,这引入了复杂性并且缺乏灵活性。例如,使用XML ID需要类型系统定义标识符是什么以及引用是什么, 这意味着这样的定义是在底层图结构的外部,从而引入了使用复杂性。因此,特别需要使用紧凑的人类友好的句法而不使用显式标识符来创作复杂图结构化数据的能力。当今将半结构化程序数据表示成图的上述缺点仅旨在提供常规系统的一些问题的概览,并且不旨在是穷尽性的。常规系统的其他问题以及此处所描述的各非限制性实施例的对应的益处可以在审阅以下描述后变得更显而易见。概述此处提供了简化概述以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本概述并不旨在作为详尽的或穷尽的概观。 相反,本概述的唯一目的是以简化的形式来提出与一些示例性非限制性实施例相关的一些概念,作为以下各实施例的更为详细的描述的序言。提供了用于声明性编程语言的基于树的有向图编程结构的各实施例。在各实施例中,复杂图结构化数据(在此在一个非限制性实现中被称为“DGraph(D图)”)是使用紧凑的人类友好的句法而不使用显式标识符来创作的。在一个非限制性方面,句法包括对遵从 (conformance)关系(也被称为因子分解(factored)关系)的支持。在另一非限制性方面,半结构化图数据是基于树的表示,并且句法包括引用的词法解析或词法作用域确定和/ 或非局部初始化。这些和其他实施例在下面将更详细地描述。附图简述各非限制性实施例参考附图来进一步描述,附图中附附图说明图1是声明性编程语言和相关结构的编译过程链的框图;附图2是遵从关系的一般图示;附图3是示出有向图结构的第一非限制性方面的流程图;附图4是示出有向图结构的第二非限制性方面的流程图;附图5是示出根据本文描述的一个或多个方面的作为具有计算机可执行模块的计算机可读介质的示例性实施例的框图;附图6是出于说明性目的的半结构化图数据的示例图表表示;附图7是出于说明性目的的半结构化图数据的示例图表表示;附图8是出于说明性目的的半结构化图数据的示例图表表示;附图9示出结合一个或多个实施例中描述的基于树的结构的词法作用域确定的示例性方面;附图10、11、12及13示出有向图结构的不同的词法作用域确定选择的到文本表示的图表映射,从而能对各选择进行比较;附图14、15、16、17和18类似地示出一系列类似的或相关的有向图结构示图,用于示出用于描述图结构的紧凑且灵活的句法的附加方面;附图19是用于声明性编程模型和相关表示的示例性过程链;附图20是与面向记录的执行模型相关联的类型系统的图示;附图21是根据本专利技术的一实施例的与基于约束的执行模型相关联的类型系统的非限制性图示;附图22是根据有序的执行模型的数据存储的图示;附图23是根据次序无关的执行模型的数据存储的非限制性图示;附图24是表示其中可实现此处所描述的各实施例的示例性、非限制性联网环境的框图;以及附图25是表示其中可实现此处所描述的各实施例的一个或多个方面的示例性、 非限制性计算系统或操作环境的框图。详细描述概览如以上在背景中讨论的,常规系统尤其不能允许使用紧凑的人类友好的句法来创作复杂图结构化数据。在用XML来表示复杂图结构化数据的情况下,该表示必须使用诸如 XML_ID等显式标识符或引用来形成该结构化图数据。因此,在各非限制性实施例中,提供了用于声明性编程语言的基于树的有向图编程结构的各实施例。复杂图结构化数据(在此在一些实施例中被称为“DGraph”)可以使用紧凑的人类友好的句法而不使用显式标识符来创作。在各非限制性方面,句法包括对遵从关系的支持,启用引用的词法解析(也称为词法作用域确定)和/或非局部初始化。作为以下内容的路标,首先提供各实施例的概览,然后更详细地讨论示例性的、非限制行的任选实现及示例图和图表示来提供另外的理解。接着,结合诸如D编程语言等声明性编程语言来提供一些补充上下文。最后,阐述了其中可以部署本文描述的技术的一些示例性非限制性网络和计算环境。—般而言,用声明性编程语言来创作源代码通常是合乎需要的,声明性编程语言通常被认为是命令性编程语言的对应物。与命令性编程语言不同,声明性编程语言允许用户写下他们想要从他们的数据得到什么,而不必指定如何针对给定的技术或平台来满足这些希望。就此,D编程语言(或简写为“D”)(可在下文中找到关于它的更多细节)是很适于紧凑且人类可理解的表示的声明性编程语言,并且有利地包括用于独立于诸如闪存、关系数据库、RAM、外部驱动器、网络驱动器等底层存储机制来创建并修改数据密集应用程序的高效构造。“D”有时也被称为“M”编程语言,但为了一致起见,在本文中不使用对M的引用。D包括用于编写声明性源代码的高效且紧凑的句法。就此,D的编程构造还可基于为编译器所接收到的给定源代码而生成的一个或多个抽象句法树来高效地表示成半结构化图数据。另外,由于该半结构化图数据的句法的人类友好性质,在可直接指定该半结构化图数据的情况下,应用程序和开发人员不需要形成实际源代码。就此,基于一组树,或D程序的另一规范,可以形成由于句法中支持的各新颖属性而高效地表示D程序的编程构造的 DGraph,这些新颖属性有助于形成对于机器以及人类可理解的较简单DGraph结构,人类基于对并不深奥的DGraph结构的文本表示(像语义图的常规文本表示一样)的视觉调查就可以理解该DGraph结构。示出了可以表示并使用D程序的不同方式的一般框图系统在附图1的编译链中示出。例如,源代码100可由开发人员或机器直接创作。源代码100可由D编译器110来编译,所述D编译器110包括例如用于解析源代码100的D解析器120和用于形成D句法树的D句法树组件130,D句法树随后可被分析并转换成D图(DGraph)结构140。D图结构 140可由开发人员直接生成,并且也可由应用程序直接生成,并且基于D图结构所支持的某些特征来以紧凑的方式表示。D图结构140可被展开到树130上并展开回源代码本文档来自技高网...
【技术保护点】
1.一种用于基于树表示来将声明性编程模型的编程构造表示成有向图的方法,包括:接收400声明性编程语言的至少一个句法树数据结构的表示;接收410定义交叉引用所述至少一个句法树数据结构的不同方式的词法作用域的至少一个指示;以及生成420包括始发自来自第一句法树数据结构的节点和来自第二句法树数据结构的节点的至少一个交叉引用的有向图数据结构,所述至少一个交叉引用是基于词法作用域的所述至少一个指示来确定的。
【技术特征摘要】
【国外来华专利技术】...
【专利技术属性】
技术研发人员:D·E·兰沃西,
申请(专利权)人:微软公司,
类型:发明
国别省市:US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。