句法程序语言翻译的制作方法

文档序号:6568454阅读:233来源:国知局
专利名称:句法程序语言翻译的制作方法
句法程序语言翻译站旦 冃足计算机程序是描述由计算机或基于处理器的设备执行的动作的指令列表。当 计算机程序被加载并在计算机硬件上执行时,计算机将会跟随计算机程序的指令以 预先确定的方式运转。因此,计算机变为执行可由各指令描述的任务的专用机器。 使用编程语言的程序员创建包含计算机程序的指令。随着计算机程序变得越来越复 杂,编程语言已经从计算机容易理解的低级机器码语言发展到更易于人类理解的高 级源代码语言。编程语言通常基于语言的特性和特征被分入各种类别。例如,c通常被描述为过程性编程语言,因为它基于模块性概念和程序代码的范围。C弁和Java是面向 对象的编程语言,它转变为将程序代码的创建和处理作为对象类。面向数据的语言 包括SQL (结构化的查询语言)和Xpath则朝向对存储数据的搜索和处理,诸如 相关数据或XML (可扩展标记语言)数据。这种专业化的结果是各种编程语言都 具有其特定的优点和缺点。程序员现今通常偏向于用他们具有大量经验的或者最为合适一项目大部分的 特定语言来开发计算机程序。然而,程序员认识到各编程语言间的专业化并且愿意 为具体任务利用对其最佳的语言。例如,C財呈序员可能希望接触使用SQL的相关 数据库,这样就能从SQL面向数据的各方面和效率中获益。实现此目的的一种方 法是将C弁询问表达翻译成SQL询问表达。编程语言的集成要求从第一语言到第二 语言的句法翻译。这能确保在第一语言中指定的所有程序性状态、表达等的意义被 翻译成具有与第一语言指定意义相同的意义的第二语言的句法。这通常涉及非常困 难的句法和数据的转换,以保护第一语言的语义。发明内容以下呈现了简化概述,以提供对权利要求主题的某些方面的基本理解。本概 述不是广义的概览。它并不意指标识关键/重要元素也不意欲描绘权利要求主题的范围。这一概述的唯一目的是以一种简化的形式来介绍一些概念,作为稍后呈现的 更为详细的描述的前序部分。简言之,在此提供了编程语言翻译系统和方法。更具体地,包括但不限于表 达式的语言元素或构造能够经历从第一源语言到第二目标语言的句法翻译。该翻译 或展开可以是句法性的,由映像或映射而非完全语义来指导。例如,表达式或子表 达式的至少一部分可以被一对一地翻译,以使得在源语言表达式中所表达的内容被 逐字翻译至目标语言。这类翻译允许由目标语言而非源语言来定义语义,尤其是还 可以生成可判定的翻译。此外还提供了在句法翻译中使用的用于生成映像的系统和方法。该映像可以 基于源语言和目标语言的匹配程序句法以及上下文或实现指定的信息而被填充。映 像可由翻译系统作者或厂商生成。额外地或者作为替代,非固有映像可由其他方、 插件提供,并且能够像固有映像那样用于促进从一种语言到另一种语言的翻译或展 开。为实现上述及相关成果,结合下列说明和附图,在此描述所要求保护的主题 的某些示例性的方面。这些方面指可以实践示本主题的各种方法,这些方法均被规 定为是在所要求保护主题的范围之内。结合附图一起考虑,从下面的详细描述可以 明显看出本发明的其他优点和新颖特征。


图1是程序代码翻译系统的框图。图2a示出了语言翻译或展开的示例性图示。图2b示出了语言翻译或展开的示例性图示。图3是映像产生系统的框图。图4是获取非固有映像的语言翻译系统的框图。图5是标识映像以供利用的语言翻译系统的框图。图6是便于与翻译或展开系统交互的接口系统的框图。图7是语言翻译方法论的流程图。图8是表达式翻译方法的流程图。图9是翻译映像方法的流程图。图IO是语言注册方法论的流程图。图11是翻译或展开方法论的流程图。图12是示出了合适的操作环境的示意性框图。 图13是示出了示例计算环境的示意性框图。
具体实施方式
现在参考附图描述本权利要求主题的各个方面,其中始终用相同的参考数字 来指示相同的或相应的元素。然而应该了解,附图以及与其相关的详细描述并不旨 在把所要求保护的主题限制为公开的特定形式。相反,其意图是覆盖落在所要求保 护的主题的精神和范围内的所有修改、等效和替换的方案。在此所用的术语"组件"、"系统"等等意指与计算机相关的实体,可以是硬件、 硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于是,在处理 器上运行的进程、处理器、对象、可执行(程序)、执行的线程、程序和/或计算 机。作为例示,运行在计算机上的应用程序和计算机本身都可以是计算机组件。一 个或多个组件可以驻留在进程和/或执行的线程中,并且组件可以位于一个计算机 内和/或分布在两个或更多的计算机之间。在此使用词语"示例性的"意指用作例子、实例或例示。在此被描述为"示例 性的"的任何方面或设计并不一定被解释为比其他方面或设计优先或有利。此外,使用产生软件、固件、硬件或其任何组合的标准编程和/或工程技术, 所公布的主题可以被实现为控制基于计算机或处理器的设备实现在此被所详述的 方面的系统、方法、装置或产品。此处所用的术语"产品"(或作为替换,"计算 机程序产品")规定为包含可以从任何的计算机可读设备、载波或介质访问的计算 机程序。例如,计算机可读介质可以包括但不限于磁存储设备(例如,硬盘、软磁、磁带等)、光盘(例如,光盘(CD)、数字通用盘(DVD)等)、智能卡和闪速存储器设备(例如,卡、棒)。另外应该明白,载波可以被用于携带计算机可读电 子数据,例如那些被用于传送和接收电子邮件方面或被用于访问网络如因特网或局域网(LAN)的数据。当然,本领域的技术人员将会认识到,在不背离所要求保 护的主题的范围或精神的前提下可以对这一配置进行许多修改。最先转向图l,描绘了程序代码翻译系统100。系统100包括语法分析程序组件 110、翻译组件120和映像130。语法分析程序组件110接收程序性代码并将其语法分 析成表示语言内诸如符号、运算符(例如,+、 -、 *、 =、 ==、 &、 %等)、类型之 类的基元素的特征记号(token)和语法分析树。这些特征记号被独立地或作为语 法分析树集合传递至翻译组件120。翻译组件120接收特征记号或特征记号的集合并将其从第一源程序语言展开或翻译成第二目标语言的对应元素。例如,第一语言中 的等号"="可以被映射至第二语言中的等号。为了便于这一翻译或展开,翻译组件120可以与映像130交互并由其指导。映像130提供第一语言的句法、操作、名称与 第二语言的句法、操作、名称之间的映像或映射。映像130能包括一个记录,它不 仅可以包括为编程语言所共有的基元素,还包括诸如字段、变量和/或表名的特定 上下文或实现的信息。因此, 一旦语法分析程序110接收到具体的特征记号或语言 元素,翻译组件120就在映像130中标识这一元素并在第二语言中检索相应的一个或多个元素。从输入或源代码到目标代码的变换或翻译可以是纯句法的。然而,映像 130可以具体表达至少部分语言语义。图2a示出了一个简单的示例性翻译200a,以便清楚地理解由图1的系统100所 提供的翻译。应该注意到,虽然被表达为从C存到SQL的翻译,但是本发明决不限 定于此。可以使用任何其他的语言。该示例也可以容易地利用不同的语言(例如, 从XPath/Xquery到SQL等)。作为示例而非限制,例如面向对象语言的表达式或代 码可由语法分析程序110接收并最终由翻译组件120翻译或展开为SQL代码。在此, 表达式是对应于cs.where (|c| c.name = "Jones")的查询表达式。该示例性表达式包括 典型的面向对象的点操作符,以及X过滤器表达式或子表达式。该语句声明找出其 中顾客名为Jones (琼斯)的所有顾客(cs)。这里存在两个主要展开。首先,主表达 式"cs.where"可以基于句法映像130被翻译或展开为"Select * From Customers Where"。面向对象的语句对应于从与一个或多个顾客的表相对应的"cs"中做出选 择。接下来,在此为X表达式的子表达式能够被翻译并用于填充该展开的主表达式。 在此情况下,过滤器或选择表达式陈述从顾客(cs)中选择名为Jones的顾客(c)。这可 被翻译为简单的name-"Jones"(名="琼斯")并作为一 自变量插入Select (选择) 语句的Where (哪里)参数。应该注意到,存在从源语言的name = "Jones"到目标或 目的语言的name = "Jones"的直接翻译,而无需考虑其语义内涵。图2b示出了一个示例性的翻译或展开200b,以便进一步地清楚理解图l中系统 IOO的操作。展开200b与翻译200a的相似,不同之处在于所产生的不同结果。同样 地,存在表达式"cs.where(|c| c.name = "Jones")"。主表达式随后被展开为SQL型 表达式,即"Select * From Customers Where"。这指示从满足部分条件的顾客表 中选择。条件在子表达式中指定,并且碰巧也指定为X表达式。在此示例中,条件 name = "Jones"被翻译或展开为某些其他的条件,在这些条件中对name实现某些函 数并且对字符串Jones执行某些转换,例如将Unicode字符串转换成ASCII字符串等。换句话说,相同的条件表达式并不作为条件自变量被放入Where子句或参数。相反 地,执行某些语义转换或翻译以确保展开的表达式或子表达式在此情况下与在源语 言中指定的内涵相同。在此,源语言的语义被维持。虽然表达式200b表示了用于将源语言表达式翻译为目标语言表达式、语句等 的可行选项,但是存在与其相关联的至少一个问题。更具体地,程序员可以利用源 语言编程,该程序随后可被翻译成目标或目的语言,以使其与目的语言的细节隔离。 例如,用户可以用C弁或XQuery/Xpath进行速记编程,但是目标语言则可以是用于 关系数据访问的SQL。程序员知道一具体的表达式在被翻译为一具体的目标语言。 因此,他们通常会查看生成了什么,并且令他们惊讶的是,这看上去根本不像他们 所期望的那样。如展开200b所示,转换和数据操作的全部分类对维持源语言的语义 而言是必需的。除了令人惊讶的结果之外,转换的表达式还会由于支持语义保存的 功能性而使得执行变地缓慢且低效。此外,这一翻译会对调试过程施加严重破坏, 因为源语言表达式中一个很小的变化都可能引起目标语言中出现惊人的变化。此 外,程序员将无法找寻生成结果从何而来,因为目标语言内的变化非线性地响应源 语言代码的改变并且是不可预知的。该翻译或展开对用户或程序员而言实际上是一 个黑盒子。表达式200a不会遇到相同的问题。表达式200a不是完整的语义维持翻译。在 此,表达式name = "Jones"的至少一部分被一对一地翻译,或者从另一观点看根本 就没被翻译而是作为源中指定被复制。这为程序员提供了可预知性,所以他们知道 他们指定的这一name = "Jones"条件何时将被翻译为目的语言的name = "Jones"。没 有为保存源语言的语义而产生意外的转换。实际上,是从目标语言而非源语言来理 解语义的。这就尤其提供了来自目标语言的语义可扩展性。于是,翻译就成为一种 不强制执行任何源语言的语义规则的宏展开。作为示例,如果用源语言写表达式a * b + c,则会应用来自目的语言的优先和关联规则。于是,如果源语言的语义指定了 先做乘法再做加法而目的语言的语义则指定先做加法,则不会对诸如(a * b)十c的表 达式做出任何转换或更改以保存源语言的语义。转向图3,描绘了映像产生系统300。该系统包括句法匹配组件310、用户界面 组件320和映像生成组件330。寻找映射的两种语言被提供给句法匹配组件310。在 此,语言A和B提供为匹配组件310的输入。匹配组件310提供一种能够让语言A和 语言B的句法相匹配的机制。例如,语言A的数字、符号和运算符能够与语言B的 相同或相应的数字、符号和运算符相匹配。此外,句法匹配组件可以接收诸如名称字段、表和变量等的上下文信息。以此方式,语言A中诸如"CS"的名称能够与语言B中例如"customers (顾客)"表相匹配。此外,用户界面组件320可以通信地耦合 至句法匹配组件。用户界面组件320为用户,或者是管理类型的用户提供一种控制、 协调或以其他方式影响语言句法匹配的机制。例如,用户可以确保适当的上下文信 息被匹配和/或类似的函数或操作被适当匹配。可以将匹配信息提供给映像生成组 件330。映像生成组件可以从匹配信息中生成映像。例如,映像可以是包括匹配句 法的计算机可读映像或映射文件。应该理解可以提供任意形式的映射,尽管如此, 在一个实例中的映射可以是XML文件。图4是获得非固有或插件映射的语言翻译系统400。诸如图l系统的翻译系统可 以包括有关多种语言的一个或多个映射。然而,该系统由于其能够获取有关新语言、 扩展、其他语言和/或不同上下文的替换版本的新的非固有映射,因而是可扩展的。 系统400包括接收程序组件410、注册组件420和存储430。接收程序组件410接收、 检索、或以其他方式获取计算机可读映像。该映像可以包括第一语言句法到第二语 言句法的映射,诸如从Xquery到SQL的映射。该映像一旦被接收,就将其提供给注 册组件420。注册组件420接收该映像并能够初始将该映像存储至计算机可读存储 430。注册组件420还可以在注册表或注册表440中生成并存储一条目,用来指示例 如通过源和目标语言的映像以及它在存储430中的位置。 一旦注册,该映像就可由 诸如以上有关图1描述的系统1100之类的翻译或展开系统所使用。转向图5,提供了定位映像以供使用的语言翻译系统500。系统500包括语言标 识组件510、映像检索组件520和存储430。语言标识组件510分析在此出现的多种语 言以按问题标识所述语言。语言标识组件510将该语言的标识提供给映像检索组件 520。映像检索组件随后可以标识给定该语言标识的合适的映射以及可任选的某些 上下文信息。例如,映像检索组件可以与注册表440交互以标识有关具体源和目标 语言的映射。注册表440还可以识别合适映射的位置或提供该合适映射的指针。随 后可从计算机可读存储430中检索映像,并将其提供给语言翻译或展开系统。图6示出了用于与翻译或展开系统交互的接口系统600。系统600包括应用程序 接口组件610和翻译接口组件620。应用程序接口组件610能够与第一计算机语言应 用程序交互。例如,应用程序接口组件610能够接收程序性元素,诸如表达式、语 句、块等。应用程序接口组件610能够将这些程序性元素传送至或者提供给翻译接 口组件620。变换接口组件620能够通信地耦合至翻译系统或包括在翻译系统内,因 而能够为这些程序性元素提供翻译或展开。可以将翻译的程序性元素和/或诸如査询结果的其他数据从翻译接口组件620发送回应用程序接口组件610。应该理解,应 用程序接口组件610和/或翻译接口620可以形成用来与翻译系统交互的应用编程接 口 (API)的全部或部分。因此,接口可以发送与程序性代码的翻译或展开有关的 任何和全部信息。为了便于进一步理解公开主题的各方面,提供了示例性的场景及其解决方案。 应该注意到,提供这些场景和解决方案仅仅是出于提供有关在此公开具体主题的清 楚阐述的目的,而非意欲以任何方式限制公开主题的范围。在此提供的系统和方法 可用于各种不同的情形,其后仅描述其中之一。通常期望例如通过web服务或其他类型的应用,将关系数据作为XML提供给 数据库用户。换句话说,提供关系数据的XML视图。使用关系数据的XML视图的 主要吸引力是它为用户提供了对其平面关系数据的分级视图,从而使其更容易地导 航至这种层级。在此场景下,已经发现存在各种重要特征来确定用户是否利用这一 技术。首先,对用户而言很重要的是存在一种简单检索、更新和操纵XML数据的机 制。数据库提供方或所有者通常会通过XML方案(XSD-XML方案定义)来建立与 用户的联系,并且允许用户从XSD方案中描述的XML后端取回数据。用户更希望 在无需手动编写复杂的SQL查询的情况下被授权与数据库快速交互。此外,为用户提供高性能且可预知行为的高效查询也很重要。用户正当地期 望转换不会被应用,以免有损性能。例如,用户期望不要转换索引的各列,因为这 将大幅削弱性能。用户也不赏识并且通常不会利用提供不确定性或非单调行为的应 用或技术,例如在其中查询响应于一微小变化会有完全不同表现的应用或技术。此外,用户因其数据被存储在关系数据库中而具有很强的理解力,他们应该 能够使用由数据库提供的固有功能性。当类似的功能对Xquery和SQL可用时,用户 通常期望该SQL函数被直接映射至相应的Xquery函数。换句话说,SQL函数将在执 行查询时被使用。响应前述考虑,语言可以被设计或翻译,以使得数据的XML视图可以基于映 射信息,由对数据源查询语言的直译路径和过滤器表达式来査询。例如, XPath/Xquery或其子集可被用于提供定位诸如XML节点的映像目标并对该节点应 用谓词(的能力。在此谓词中,在其本身和子轴上的任何相关XML节点都可用于 过滤表达式。表达式可以从XPath/Xquery翻译成SQL,其中XML项由映射的SQL项 (例如,表、歹ij)代替,并且子节点和属性遍历被翻译成对各映射表间合适关系的联结。基于在此谓词中使用的位置路径和节点信息,査询能够在对涉及合适的表/列的XML映像或映射的关系的指导下被翻译成SQL。由执行该SQL产生的记录随后 能够被实现为映射的XML节点。位置路径是Xquery语法或BNF (巴克斯-诺尔范式或者巴克斯范式)的一部分, 它具有关于该路径和谓词的所需信息以便于翻译至SQL。相对位置路径能够由一系 列的一个或多个位置阶梯组成,这些位置阶梯由诸如"/"的分隔符隔开。在相对 位置路径内的这些步骤从左向右组合在一起。每个阶梯选择一节点,该节点是前一 阶梯节点的子节点。绝对位置路径由其后可任选地跟随着相对位置路径的"/"组 成。"/"本身选择包含上下文节点的文档的根节点。如果其后跟随相对位置路径, 则随后该位置路径就选择一组节点集,该结点集由该相对位置路径相对于包含上下 文节点的文档的根节点而选择。在BNF范式中PathExpr::= RelativePathExpr | "/,,RelativePathExpr RelativePath::= StepExpr("/" StepExpr)*位置阶梯可以任一选择命名的子节点、 考虑如下BNF:StepExpr ::= AxisStep | FilterExpr AxisStep ::= ForwardStep PredicateList ForwardStep ::二 AbbrevForwardStep AbbrevForwardStep ::= "@" QName FilterExpr ::= PrimaryExpr PredicateList属性、或其本身中任何一个。例如,谓词就该路径过滤一组节点集以产生一组新的节点集。谓词表达式基于提供作为上下文节点规定的节点路径而被翻译成SQL。在BNF: PredicateList::= '[' Expr '],*需要表达式作为过滤-表达式。圆括号可用于分组。考虑以下用于表达式的BNF:PrimaryExpr ::= Literal | VarRef |'(' Expr ')' | ContextltemExpr | FunctionCall Literal ::= Same literals as SQL VarRef ::= "$" QName ContextltemExpr ::='.'Expr::=Expr BinaryOperator Expr| UnaryOperator Expr | PathExprBinaryOperator '*' | 'div' | 'mod' | '+, | '-'| '=, | '>,| '<, | '>=' | '<=, | '!=, | '!>' |'!<, |'A, I '&, I T I 'NOT' I 'AND' I 'ALL' | 'ANY, | 'BETWEEN' | 'IN, | 'LIKE' | 'OR, |'SOME' I ,IS NULL'UnaryOperator::- '-' | '+, | ' ,应该注意到运算符的优先和关联与SQL的相同。以上语法的效果是优先次序是(最高优先级优先)+ (Positive), - (Negative), ~ (Bitwise NOT) (note: Unary operator)* (Multiply), / (Division), % (Modulo)+ (Add), (+ Concatenate), - (Subtract)=,>,<,>=,<=,<>,!=,!>,!< (Comparison operators)A (Bitwise Exlusive OR), & (Bitwise AND), | (Bitwise OR)NOTANDALL, ANY, BETWEEN, IN, LIKE, OR, SOME, IS NULL当一个表达式中有两个相同运算符优先级的运算符时,则基于它们在表达式中的位 置从左向右求值。考虑以下呈现的示例。以下阐述从SQL查询到XML数据类型CREATE TABLE XmlDT(name nvarchar(15), data xml)INSERT XmlDT VALUES ('Joe', '<Order><Item>TabletPC</Item></Order>')INSERT XmlDT VALUES ('Jim', '<Order><Item>Laptop</Item></Order>')相关的映射文件是:<Map Source="XmlDT" Target="Sample"〉<FieldMap SourceField="name" TargetField="@name7> <FieldMap SourceField="data" TargetField="Order" xe:MergeToLevel="true'7> </Map>可应用的查询:/Sample
','nvarchar(15)')='TabletPC,将生成以下SQL语句SELECT name,data FROM XmlDTWHERE data.value('(Order/Item)[l]','nvarchar(15)') = TabletPC'已经关于一些组件之间的交互作用描述了上述系统。应该明白,此类系统和 组件可以包括在此所指定的那些组件或子组件、所指定组件或子组件中的一些和/ 或另外的组件。例如,系统可以具有语法分析程序组件IIO、翻译组件120、句法匹 配组件310、用户界面组件320、映像生成组件330、接收器组件410、注册组件420、 语言标识组件510、和映像检索组件520、或者它们的结合。另外,应该注意, 一个 或多个组件可以被组合成提供集合功能性的单个组件,或者被分割成若干子组件。 诸组件也可以与在此未具体描述但本领域的技术人员已知的一个或多个其他组件 交互。此外,应该明白以上公开的系统以及以下方法的不同部分可以包括或包含基 于人工智能或知识或规则的组件、子组件、进程、装置、方法或机制(例如,支持 向量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎、分类 器等)。此类组件和其他组件可以自动化地执行特定机制或进程,由此使得系统和 方法的诸部分变得更加自适应、高效及智能。例如,翻译组件120可以利用人工智 能、机器学习或者类似的机制来促进代码的展开或翻译。额外地或者作为替代,句 法匹配组件310可以利用这些智能机制以促进对多种语言句法的匹配。考虑到以上描述的示例性系统,参考图7-11的流程图将可以更好地理解依照 所公开的主题实现的方法。尽管出于简化解释的目的,各方法被显示和描述为一系 列的框,但应该理解和明白,所要求保护的主题不受框的顺序所限,因为一些框能够以与在此所叙述和描述所不同的顺序发生和/或与其他框同时发生。而且,实现 以下所描述的方法并非需要全部示例的框。另外还应该明白,下文以及本说明书全文中所揭示的方法可以被存储在产品 上,以便于把此类方法传送和传输给计算机。所使用的术语"产品"意指包含可以 从任何计算机可读设备、载体或介质访问的计算机程序。转向图7,描绘了语言翻译方法论700。在710处,从第一或源语言中获取代码。 作为示例而非限制,第一语言可以是面向对象的语言或标记査询语言。在框720, 定位翻译或句法映像。映像可以提供关于从第一源语言的句法到第二目标语言的句 法的句法信息。映像可以被存储在计算机可读介质上或存储在翻译系统内。在框 730,利用句法映像把从第一语言获取的代码展开为第二语言的代码。方法论700 例如可用于将基于XML的查询翻译成基于关系的查询,或许就是SQL。该査询可 由查询处理器执行并可生成关系结果。类似的方法论可用于随后以XML传递回各 个结果。例如,可以利用相同的映像或者其中SQL是源而XML是目标语言的另 一映像。随后可利用该映像将结果翻译回XML.图8是表达式翻译方法800的流程图。在编号810处,接收、检索或以其他 方式获取源语言的表达式(例如,査询表达式)。表达式能够包括诸如自变量的子 表达式。例如,表达式可以指定数据的路径或位置,而子表达式可以指定某些过滤 器逻辑或谓词。在820处,该表达式被翻译成目标语言相关句法的表达式。这一翻 译动作能够涉及主表达式,例如面向对象的或标记语言表达式标识要査询的数据以 使得该表达式被翻译成诸如SQL的目标语言。作为示例,表达式"cs.where(lcl c.name ="Jones")"的"cs.where"可以被翻译成"Select * From Customers Where"。在此 示例中,Where子句不包括任何逻辑或表达式,因为它是由子表达式提供的。在 820处,将子表达式的句法从源语言翻译成目标语言,并且填充由主表达式生成的 句法或结构。子表达式的翻译无需保存源语言的语义。因此,子表达式或其部分能 够被逐字翻译,由此仅保存子表达式的句法。在之前的示例中,子表达式"lcl c.name ="Jones""能够被简单地翻译成"name = "Jones""并且作为自变量提供给Where 子句。图9示出了翻译或展开映像方法900。在编号910处,第一语言的程序句法与 第二语言的程序句法相匹配。该动作可以是自动的、半自动的或手动的。在920 处,可以基于匹配信息生成映像。该映像可以包括对诸如操作符的对应基本元素的 映射,并且还可以包括数据或实现指定的信息,例如"cs"对应于名为"coustomers"的表。在930处,可以将生成的映像提供给语言展开/翻译系统以供使用。方法900 可用于产生固有和非固有映射。因此,翻译系统厂商可以利用方法900来产生可由 该系统包括的映像。额外地或者作为替代,第三方可以创建它们自己的映像,这些 映像可被添加或插入该系统。图IO示出了展开或翻译系统映像注册方法论1000。作为示例而非限制,方法 IOOO可用于支持插件或非固有映像。在1010处,接收、检索或以其他方式获取句 法映像。如前所述,映像可以记录来自多种语言的对应句法,尤其包括操作符和上 下文指定的信息(例如,数据方案)。在1020处,映射可以在计算机可读存储中 持有。在1030处,该映像被注册。注册尤其可以包括对映像位置或指向其的指针 的记录,以及有关该映像可用于哪些语言的信息。映像一旦被注册,它就变得可用。 方法1000提供用于接收和操作固有以及非固有映像的手段。转向图11,描绘了翻译方法论1100的流程图。在编号1110处,标识源语言和 目标语言。例如,Xpath可以是源语言而SQL可以是目标语言,或者反之亦然。 在1120处,定位映射源语言和目标语言的句法映像。这可以通过査阅注册表并检 索指向合适映像的位置的指针以执行展开来实现。最后,在1130,利用该映像翻 译一个或多个表达式或其他程序单元。该翻译是从源句法到目标句法的翻译,而无 需完全实施源语言的语义。语义可由目标语言定义。为给所公开的主题的各方面提供上下文,图12和13以及下列讨论旨在提供 可以在其中实现所公开主题的各方面的合适的计算环境的简要、概括的描述。尽管 前面己经在运行在一个或多个计算机上的计算机程序的计算机可执行指令的一般 上下文中描述了本发明,然而本领域内的技术人员将认识到,本发明也可以和其他 程序模块结合实现。 一般地,程序模块包括执行特定任务和/或实现特定抽象数据 类型的例程、程序、对象、数据结构等等。而且,本领域内的技术人员将会理解, 本发明的方法可以与其他计算机系统配置一起实施,包括单处理器或多处理器计算 机系统、小型计算设备、大型计算机以及个人计算机、手持式计算设备(例如,个 人数字助理(PDA)、电话、手表等)、基于微处理器的或可编程的消费性或工业 电子产品等等。也可以在分布式计算环境中实践所例示的方面,在这些分布式计算 环境中,由通过通信网络而被连接的远程处理设备来执行任务。然而,若非全部也 有部分本发明的方面可以在独立计算机上实现。在分布式计算环境中,程序模块可 被置于本地或远程的存储器设备中。参考图12,为实现在此公开的各方面的示例性环境1210包括计算机1212(例如,台式计算机、膝上型计算机、服务器、手持式计算机、可编程消费者或工业电子产品等)。计算机1212包括处理器单元1214,系统存储器1216,以及系统总线 1218。系统总线1218把包括但不限于系统存储器1216的系统部件连接到处理单元 1214。处理单元1214可以是各种可用处理器中的任意一种。双微处理器和其它多 处理器结构也可用作处理单元1214。系统总线1218可以是几种类型的总线结构中的任意一种,包括存储器总线或 存储器控制器,外围总线或外部总线,和/或利用下述可用总线结构中的任意一种 的本地总线,包括但不限于,11位总线,工业标准结构(ISA),微通道结构(MCA), 扩展工业标准结构(EISA),智能化驱动器电子接口(IDE), VESA本地总线(VLB), 外围部件互连(PCI),通用串行总线(USB),高级图形端口 (AGP),个人计 算机内存卡国际联合会总线(PCMCIA),以及小型计算机系统接口 (SCSI)。系统存储器1216包括易失性存储器1220以及非易失性存储器1222。基本输 入/输出系统(BIOS)包含诸如在启动期间在计算机1212的元件之间传送信息的 基本例程,被存储在非易失性存储器1222中。作为例子而不是限制,非易失性存 储器1222可以包括只读存储器(ROM),可编程ROM (PROM),电可编程ROM (EPROM),电可擦除ROM (EEPROM),或者闪存。易失性存储器1220包括 用作外部高速缓存的随机存取存储器(RAM)。作为例子而不是限制,RAM可以 是很多形式,诸如同步RAM(SRAM),动态RAM(DRAM),同步DRAM(SDRAM), 双速SDRAM (DDR SDRAM),增强型SDRAM (ESDRAM),同步链接DRAM (SLDRAM),以及直接存储器总线RAM (DRRAM)。计算机1212还包括可移动/不可移动,易失性/非易失性计算机存储介质。例 如,图12示出了磁盘存储器1224。磁盘存储器1224包括但不限于诸如磁盘驱动 器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡、 或者记忆棒之类的设备。此外,磁盘存储器1224可以包括独立的或者与其它存储 介质结合的存储介质,包括但不限于诸如压縮盘ROM驱动器(CD-ROM)、可记 录CD驱动器(CD-R驱动器)、可重写CD驱动器(CD-RW驱动器)或者数字 视频盘ROM驱动器(DVD-ROM)等光盘驱动器。为了便于把磁盘存储装置1224 连接到系统总线1218,通常把可移动或不可移动的接口用作诸如接口 1226。应该明白,图12描述了在合适的操作环境1210中描述的基础计算机资源和 用户之间起到中介作用的软件。这些软件包括操作系统1228。存储在磁盘存储器 1224上的操作系统1228,在运行时控制并分配计算机系统1212的资源。系统应用程序1230通过存储在系统内存1216或磁盘存储器1224中的程序模块1232和程序 数据1234,利用操作系统1228对资源进行管理。应该明白,本发明可以用各种操 作系统或操作系统的组合来实施。用户通过输入装置1236把命令或信息输入到计算机1212中。输入装置1236 包括但不限于定点设备诸如鼠标、轨迹球、指示笔、触摸板、键盘、麦克风、操纵 杆、游戏手柄、卫星反射器、扫描仪、TV调谐卡、数码相机、数字摄像机、网页 照相机等等。这些以及其它输入装置通过系统总线1218经由接口端口 1238连至处 理单元1214。接口端口 1238包括,例如串行端口、并行端口、游戏端口、以及通 用串行总线(USB)。输出装置1240利用和输入装置1236相同类型的端口。因此, 例如,USB端口可以用来向计算机1212提供输入,以及把来自计算机1212的信 息输出到输出装置1240。输出适配器1242是用来举例说明存在某些输出装置1240, 像显示器(例如,平板、CRT、 LED、 LCD等)、扬声器、以及打印机等需要专 用适配器。输出适配器1242,作为例子而不是限制,包括视频和声频卡,其在输 出装置1240和系统总线1218之间提供了连接装置。应该注意到,其它设备和/或 设备的系统提供了诸如远程计算机1244这样的输入和输出能力。计算机1212可以利用到诸如远程计算机1244这样的一个或多个远程计算机 的逻辑连接在联网的环境中操作。远程计算机1244可以是个人计算机、服务器、 路由器、网络PC、工作站、基于设备的微处理器,对等装置或者其它普通网络节 点等,通常包括所描述的有关于计算机1212中的很多或者全部元件。为了简明, 只举例说明了远程计算机1244的存储器存储设备1246。远程计算机1244经由网 络接口 1248被逻辑地连接到计算机1212然后经由通信连接1250被物理连接。网 络接口 1248包括诸如局域网(LAN)和广域网(WAN)这样的通信网络。LAN 技术包括光纤分布式数据接口 (FDDI)、铜线分布式数据接口、以太网/IEEE 802.3、 令牌环/IEEE 802.3等。WAN技术包括但不限于,点对点链接,像综合业务数字网 (ISDN)和其各种变形的线路交换网,分组交换网,以及数字用户专线(DSL)。通信连接1250指的是把网络接口 1248连接到总线1218的硬件/软件。虽然为 了清楚地举例说明,通信连接1250显示在计算机1212的内部,但其也可以在计算 机1212的外部。连接到网络接口 1248所需要的硬件/软件包括(仅为了举例说明) 内部和外部技术,诸如调制解调器包括常规电话级别的调制解调器、电缆调制解调 器以及DSL调制解调器、ISDN适配器、和以太网卡或组件。图13是本发明可以与之交互的示例性计算环境1300的示意性框图。系统1300包括一个或多个客户端1310。(诸)客户端1310可以是硬件和/或软件(例如,线程、进程、计算设备)。系统1300也包括一个或多个服务器1330。因此,系统1300 可以对应于两层客户端服务器模型或多层模型(例如,客户端、中间层服务器、数 据服务器)以及其他模型。(诸)服务器1330可以是硬件和/或软件(例如,线程、 进程、计算设备)。服务器1330可以容纳各线程以通过例如利用本发明执行转换。 在客户端1310和服务器1330之间的一种可能的通信能够以适合在两个或多个计算 机进程之间传输的数据分组的形式进行。环境1300包括可以用来促进(诸)客户端1310和(诸)服务器1330之间通 信的通信框架1350。(诸)客户端1310工作时被连接到一个或多个可以用来存储 (诸)客户端1310的本地信息的客户端数据存储1360。同样地,(诸)服务器1330 工作时被连接到一个或多个可以用来存储(诸)服务器1330的本地信息的服务器 存储1340。以上所已经描述的内容包括所要求保护的主题的各方面的例子。当然,出于 描绘所要求保护的主题的目的而描述每一个可以想到的组件或方法的组合是不可 能的,但本领域内的普通技术人员应该认识到,所要求保护的主题的许多进一步的 组合和排列都是可能的。因此,所要求保护的主题被规定为包括所有这些属于所附 权利要求书的精神和范围内的改变、修改和变动。此外,在详细描述或权利要求书 中用到的术语"包含"、"具有"的范围内,此类术语被规定为以类似于术语"包 括"的方式包括在内,此处的"包括"作为过渡词在权利要求书中使用时做出解释。
权利要求
1.一种用于计算机编程代码的翻译系统,包括接收程序性代码的语法分析程序组件;以及基于第一源语言相对于第二目标语言的句法、操作和标识符名的映像来执行所述代码的句法翻译的翻译组件。
2. 如权利要求1所述的系统,其特征在于,所述翻译组件将所述句法、操作、 表达式和/或语句的至少一部分映射至所述第二目标语言以反映所述目标语言的语 义。
3. 如权利要求2所述的系统,其特征在于,所述翻译组件映射所述句法、操 作、表达式和/或语句的至少一部分以反映源语言的语义。
4. 如权利要求3所述的系统,其特征在于,所述翻译组件从所述源语言到所述目标语言逐字映射标识符名。
5. 如权利要求4所述的系统,其特征在于,所述源语言是面向对象的语言而所述目标语言是数据库查询语言。
6. 如权利要求4所述的系统,其特征在于,所述源语言是XML查询或变换 语言而所述目标语言是数据库查询语言。
7. 如权利要求l所述的系统,其特征在于,还包括接收来自所述系统外部的 映像的接收器组件以及将所述映像存储至计算机可读介质的注册组件。
8. 如权利要求l所述的系统,其特征在于,还包括标识源语言和目标语言的 语言标识组件以及定位所述映像以便于从所述源语言至所述目标语言的翻译的映 像检索组件。
9. 如权利要求l所述的系统,其特征在于,还包括在所述源语言和所述目标语言的程序性元素之间标识所述最相关句法、操作 和标识符名的句法匹配组件;以及生成将所述源语言的所述句法、操作和标识符名与所述目标语言的相关联的 所述映像的生成组件。
10. —种计算机实现的程序性展开方法,包括 获取包括第一程序语言的至少一个子表达式的表达式; 将所述表达式翻译成第二程序语言的对应句法;以及将所述子表达式逻辑从所述第一程序语言逐字翻译至所述第二程序语言而不 考虑所述第一语言的语义。
11. 如权利要求IO所述的方法,其特征在于,还包括标识所述第一语言和第 二语言并且定位对应的句法映像。
12. 如权利要求ll所述的方法,其特征在于,还包括利用所述映像在翻译期 间标识对应的句法。
13. 如权利要求10所述的方法,其特征在于,所述第一程序语言表达式是査 询而所述第二程序语言是数据源查询语言。
14. 如权利要求13所述的方法,其特征在于,所述第一程序语言是面向对象的。
15. 如权利要求13所述的系统,其特征在于,所述第一程序语言是XML查 询或变换语言而所述第二语言是结构化的査询语言。
16. 如权利要求13所述的系统,其特征在于,所述第一编程语言是 XPath/XQuery而所述第二编程语言是SQL,所述表达式是路径而所述子表达式是 被直接翻译成Select语句的Where子句的谓词或过滤器表达式。
17. —种语法翻译方法,包括 获取第一程序语言的句法; 获取第二程序语言的句法;以及 生成对应句法的计算机可读映像。
18. 如权利要求17所述的方法,其特征在于,还包括获取上下文信息并利用 这些信息来生成所述映像。
19. 如权利要求17所述的方法,其特征在于,还包括将所述映像提供给系统, 该系统将程序性表达式和子表达式从所述第一语言的所述句法翻译成所述第二语 言的所述句法,而所述子表达式被没有转换地一对一地映射。
20. —种其上存储有计算机可执行指令用以执行如权利要求17所述方法的计 算机可读介质。
全文摘要
公开的主题涉及计算机编程语言及其翻译或转换。并非是从第一源语言(710)到第二目标语言的复杂的保存语义的翻译或转换,该转换可以是句法之一(730)。例如,该转换可通过利用定义了第一语言和第二语义的句法之间的关系的映像来完成。第一语言的至少一部分语义可由第二目标语言来定义。于是,第一语言可以是开放式的和/或是基于第二语言语义可扩展的。
文档编号G06F9/44GK101253476SQ200680028547
公开日2008年8月27日 申请日期2006年7月20日 优先权日2005年8月10日
发明者A·Y·阿哈罗尼, H·J·M·梅杰, H·阿莫德, T·F·弗雷格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1