扩展开发环境制造技术

技术编号:12528383 阅读:60 留言:0更新日期:2015-12-17 23:30
本文描述了用于扩展软件开发工具的行为的概念和技术。软件开发工具可访问并消费扩展以将该软件开发工具配置成以扩展模式执行操作。在一个示例中,扩展可基于输入源代码来扩展编译器。在一个配置中,编译器扩展可以向编译器提供特定编程语言的各种源代码元素的一个或多个运行时语义。编译器可访问扩展列表以确定编译器是否将要以扩展模式对特定源代码元素或逻辑单元执行编译操作。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】扩展开发环境 背景 为了开发用于执行计算任务的软件应用,软件开发者通常为软件应用编写概括该 软件应用的功能的源代码。存在对开发者可用的各种类型的语言,这取决于软件应用的特 定用途、其中将执行软件应用的计算环境和/或软件开发者的个人偏好。例如,语言可以是 其中通常在编译时确定变量类型的静态类型化编程语言。在另一示例中,语言可以是在运 行时确定变量类型的动态类型化编程语言。 -旦软件开发者编写源代码,如果其中将要执行源代码的环境需要可执行代码, 则使用编译器来将源代码编译成可执行代码(或者取决于系统环境而能在执行时被解 释)。编译器用于将源代码转换成可以直接在计算机系统上执行的机器代码。计算环境执 行可执行代码以实现源代码的功能。连同将源代码编译成可执行代码,常规编译器还可通 过输出调试信息来帮助软件开发者。软件开发者可使用调试信息来修复源代码中的潜在问 题,当在运行时期间执行可执行代码时,这些潜在问题可能导致故障。 本文所做出的本公开正是关于这些和其他考虑事项而提出的。 概述 本文描述了用于扩展开发环境的概念和技术。开发工具可消费扩展以修改开发工 具针对所描绘的源代码元素的行为。在一些实施例中,开发工具可消费扩展以便在各种过 程中使用扩展行为,这些过程包括但不限于预处理、词法分析、句法分析、静态分析、指令调 度、代码生成、链接、汇编、解释和JIT编译。例如,在扩展编译器的行为时,扩展可由编译器 在包括但不限于句法分析、语义分析、代码生成和代码优化的编译过程的各个阶段期间消 费。在一个配置中,当在编译器开发环境内使用时,编译器扩展可以向编译器提供特定编程 语言的各种源代码元素的一个或多个运行时语义。在一些配置中,可以在诸如但不限于静 态分析器、解释器、编译器、链接器、汇编器和模拟器的各种编程操作中使用扩展。 应当理解,上述主题可被实现为计算机控制的装置、计算机进程、计算系统或诸如 计算机可读存储介质等制品。通过阅读下面的详细描述并审阅相关联的附图,这些及各种 其他特征将变得显而易见。 提供本概述是为了以精简的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用 来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部 分中所提及的任何或所有缺点的实现。 附图简述 图1是可被用来实现本文公开的各实施例的说明性操作环境的系统图。 图2是执行可被用来实现本文公开的各实施例的编译器的说明性编译环境的系 统图。 图3是示出根据一些实施例的其中根据扩展来处理源代码的逻辑单元的编译环 境的功能框图。 图4是示出根据一些实施例的将传统源代码变换成用于经更新的操作环境的可 执行代码的功能框图。 图5是示出根据一些实施例的用于扩展软件开发工具的示例性方法的框图。 图6是示出能够实现本文中所呈现的实施例的各方面的计算系统的说明性计算 机硬件和软件体系结构的计算机体系结构图。 详细描述 以下详细描述涉及扩展软件开发工具的行为。在各配置中,向软件开发工具提供 扩展。软件开发工具消费扩展。扩展将软件开发工具针对所描绘的操作的行为从默认模式 改为扩展模式。在一些示例中,软件开发工具可出于各种原因在扩展模式中使用,这些原因 的示例在下文中更详细地描述。 尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模块的一 般上下文中提出了本文描述的主题,但是本领域技术人员将认识到,其他实现可以结合其 他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类 型的例程、程序、组件、数据结构和其他类型的结构。此外,本领域技术人员将明白,可以利 用其他计算机系统配置来实施本文描述的主题,这些计算机系统配置包括手持式设备、多 处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。 在以下详细描述中,参考了构成详细描述的一部分并作为说明示出了各具体实施 方式或示例的附图。现在参考附图(全部若干附图中相同的标号表示相同的元素),将提出 用于扩展源代码开发环境的计算系统、计算机可读存储介质和计算机实现的方法以及其他 方面。 现在参考图1,将描述用于文本呈现的各实施例的源代码开发环境100的各方面。 图1所示的源代码开发环境100包括计算设备102。在一些实施例中,计算设备102可包括 台式计算机、膝上型计算机、笔记本计算机、超便携计算机、上网本计算机或其它类型的计 算设备。操作系统104在计算设备102上执行。操作系统104是用于控制计算设备102处 的各种功能的可执行程序。 计算设备102可执行软件开发工具106。软件开发工具106可包括程序或工具,诸 如但不限于静态分析器、解释器、编译器、链接器、汇编器和模拟器。软件开发工具106可接 收包括编程语言中所表达的源代码的输入文件108。软件开发工具106可接收对输入文件 108中的源代码执行各种开发操作的命令或指令。 应当明白,本文描述的概念和技术不限于任何特定类型的编程语言。例如,输入文 件108中的源代码编程文件类型可使用静态类型化编程语言、动态类型化编程语言或其它 类型来表达。静态类型化编程语言的示例包括但不限于C、Fortran、Java和Pascal。动态 类型化编程语言的示例包括但不限于JavaScript、Perl、Lisp和VBScript。其他类型包括 强和弱类型、安全和不安全类型、相交类型、联合类型、鸭子类型和依赖类型。应当明白,本 文描述的概念和技术不限于任何特定类型。还应明白,本文描述的概念和技术不限于作为 一种特定类型的编程语言,因为一些编程语言可用作或可被认为是各种类型。 在一些配置中,开发操作可以是不产生输出的对输入文件108中的源代码的操 作。在其他配置中,开发操作可生成在图1中被示为开发工具输出110的输出。例如,如果 软件开发工具106是编译器且操作是代码生成,则开发工具输出110可包括可执行代码中 所表达的一个或多个输出逻辑单元。如此处所使用的,"逻辑单元"包括一起形成逻辑结合 整体的一组代码块或语句。逻辑单元可以是源代码元素或者可包括形成逻辑结合整体的一 个或多个源代码元素。开发工具输出Iio还可包括但不限于可查看消息、查询、输入文件 108的一个或多个分量的重写,等等。本文描述的概念和技术不限于任何特定输出。 在某些情况下,软件开发工具106可能不被配置成或不具有以下能力:理解软件 开发工具106正对其执行开发操作的输入文件108中的源代码元素的行为。如此处所使用 的,"源代码元素"包括但不限于对函数的定义或使用、类、方法、变量、宏、模板、过程、闭包、 类型、源代码文件本身或所引用的库。可以存在软件开发工具106无法识别或理解源代码 元素的行为的各种原因。 例如,如果源代码元素的行为将在运行时期间被决定,则软件开发工具106无法 理解该元素的行为。逻辑单元可包括软件开发工具106未被配置来识别的函数。在其他情 况下,软件开发工具106可被配置成对源代码元素执行不安全、过期或由于某种原因而不 合需要的操作。在其他情况下,源代码元素或逻辑单元可包括妨碍软件开发工具106识别 的误拼写。在编译器环境中本文档来自技高网...

【技术保护点】
一种用于执行源代码开发操作的方法,所述方法包括:接收包括包含至少一个逻辑单元的源代码的输入文件;接收对所述至少一个逻辑单元执行开发操作的指令;响应于接收到对所述至少一个逻辑单元执行所述开发操作的指令,确定扩展是否将被消费以用于所述开发操作;以及如果所述扩展将被消费以用于所述开发操作,则检索所述扩展;通过消费所述扩展来变为扩展模式;以及以所述扩展模式对所述至少一个逻辑单元执行所述开发操作。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:F·A·玛每瑞M·C·范宁
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1