扩展开发环境的制作方法

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