CN100454244C - 在标记中用于定义和使用子类说明的系统和方法 - Google Patents

在标记中用于定义和使用子类说明的系统和方法 Download PDF

Info

Publication number
CN100454244C
CN100454244C CNB03136764XA CN03136764A CN100454244C CN 100454244 C CN100454244 C CN 100454244C CN B03136764X A CNB03136764X A CN B03136764XA CN 03136764 A CN03136764 A CN 03136764A CN 100454244 C CN100454244 C CN 100454244C
Authority
CN
China
Prior art keywords
subclass
mark
compilation
definitions
definition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB03136764XA
Other languages
English (en)
Other versions
CN1525317A (zh
Inventor
S·拉莫尼
R·A·雷尔耶
J·L·波格丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1525317A publication Critical patent/CN1525317A/zh
Application granted granted Critical
Publication of CN100454244C publication Critical patent/CN100454244C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4492Inheritance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明描述了一种系统,方法和数据结构,能从在标记文件内的子类定义产生可执行汇编。根据本发明,子类定义是基于一种模式撰写的。该模式可以是基于XML的。该模式包括为子类定义名称的子类标记。该名称与为当可执行汇编执行示例的对象的类型有关。该模式进一步包括一个或多个标记,比如为指定一程序语言编译子类定义,指定从其派生出子类的超类,指定当对象成为示例时的执行操作,产生一事件定义和事件处理为该子类,指定当对象示例时在对象内性能成为一员。

Description

在标记中用于定义和使用子类说明的系统和方法
背景技术
当今,软件开发工具允许软件开发商有能力去利用一种或多种程序语言,比如C,C++,C#等类似的语言建立可执行部分。建立可执行部分的一个优点就是该部分一旦被建立,可以被其他软件程序再利用。建立可执行部分的另一优点是新部分可以轻易地从现有的部分扩充。
通常,部件通过子类扩充,这意味着从现有类派生出新类。这些类与子类采用一种程序语言来写。所写代码通常指源代码。对于传统运行时环境,软件开发工具将源代码编译成目标代码然后将众多目标代码联接在一起生成可执行的部分。然而,关于这些传统的运行时环境的问题之一是每种程序语言和每版程序语言需要不同的运行时环境。
为克服上述问题,一种新型的运行时环境被设定,能有效删除很多交叉语言接口和传统运行时环境的语言版本问题。在这种新型运行时环境,开发工具将源代码编译成一中间语言。在运行时过程中,运行时环境将中间语言编译成原始二进制可执行码。因此,新运行时环境将在运行时期间执行“联接型”处理。为了执行这“联接型”处理,对与正在运行的程序相连的部分,运行时环境读取信息(比如,元数据)和访问IL汇编。元数据包括类型、版本、资源等类似的说明。IL汇编可以是单一动态联接库(DLL),或者很多动态连接库和资源。
对于传统和新型的运行时环境,源代码采用一种程序语言来写。每一程序语言有它自己在运行时环境唯一的语法和特殊的应用程序接口(API)设置。软件开发商为写源代码,他们必须学习程序语言的语法和与运行时环境有关的应用程序接口。学习这些语法和应用程序接口是需要花费相当的时间并且有挑战性。另外,如果开发商希望采用很多程序语言的程序和/或不同的运行时环境,开发商必须记忆不同运行时环境下每种程序语言的语法和应用程序接口之间的相似及微小差别。
如果给出采用该部分的优点,就有必要使用一种更好的机制来建立、扩充和使用该部分。
发明概要
本发明涉及一种在标记中定义、扩充和利用子类说明的系统和方法。本发明为开发商提供一种机制来采用一标记语言建立、扩充和使用该部分。这些部分包括可再用部分,应用用户接口,文件用户接口及其类似内容。该机制不需开发商懂得程序语言。反而,该机制允许开发商利用熟悉的标记语言,比如XML(可扩充的标记语言)来建立部件。因为XML很容易学并且在一般计算机程序界内正变得比较熟知,本发明提出相对传统程序语言的几个优点。一个优点是该部分可在标记文件内被定义,和其他的标记文本,来生成一个相当复杂的电子文件。另一优点是开发商无须知道或懂得任何程序语言为了生产可执行部分。
本发明的系统、方法和数据结构能使得与子类相关的可执行部件可从写在标记文件内的子类定义而产生。依据本发明,子类定义是基于一模式撰写。该模式可以是基于XML的。该模式包括为子类定义名称的子类标记。该名称与为当可执行汇编执行示例的对象的类型有关。该模式进一步包括一个或多个标记,比如用于指定一程序语言来编译子类定义,用于指定从其派生出子类的超类,用于指定当对象成为示例时的执行操作,用于产生一事件定义和用于该子类的相关事件处理,并且用于指定当对象被示例时性能成为在对象内的一个域。
附图说明
图1示例可用在举例说明本发明的执行的规范计算设备;
图2举例说明开发系统执行本发明一实施例的功能块图;
图3是实现本发明一实施例运行时环境的功能块图;
图4-6是示例在标记文件内标记的突出部分,举例说明依据本发明一实施例为断定子类的规范语法;
图7示例标记文件的突出部分,举例说明为从标记文件内采用子类的规范语法;
图8是一逻辑流程图,举例说明处理根据本发明实施例,编译声明定义子类;
图9是根据本发明一实施例的一逻辑功能图,举例说明运行时处理利用从标记文件内声称的子类;
图10举例说明代表性源代码的规范源代码表,可以由基于如图4-6示例的标记文件的如图2所示的标记编译程序产生。
优选实施例的详细说明
本发明涉及一种在标记中定义、扩充和利用子类说明的系统和方法。本发明为开发商提供一种机制建立、扩充和利用采用标记语言的部件。该机制不需开发商懂得程序语言。反而,该机制允许开发商利用熟悉的标记语言,比如可扩充的标记语言(XML)来建立部件。
说明计算环境
图1示例可用在举例说明本发明的执行的规范计算设备。参照图1,在很基本的结构内,计算设备100典型地包括至少一处理单元102和系统存储器104。依赖于计算设备100的精确结构和类型,系统存储器104可以是可变的(比如RAM),不可变的(比如ROM,闪存等等)或者两者的一些组合。系统存储器104典型地包括一操作系统105,一个或多个程序模块,和程序数据107。例如程序模块106包括一浏览器应用,一财政管理应用,一文字处理器及其类似。此基本的结构说明在图1的108底线内的那些部分。
计算设备100可以有附加特点或者功能。比如,计算设备100也可以包括附加(可移和/或不可移)数据存储设备,比如,磁盘,光盘或者磁带等。此附加存储举例说明在如图1的可移存储109和不可移存储110。计算机存储介质可以包括被执行在任何用于存储信息的方法或者技术中,比如计算机可读指令,数据结构,程序块或者其它数据的可变和不可变,可移和不可移介质。系统存储器104,可移存储109和不可移存储110都是计算机存储媒介的例子。计算机存储介质包括但不限于RAM,ROM,EEPROM,闪存或者其他存储技术,CD-ROM,数字通用光盘(DVD)或者其它光存储器,磁盒带,磁录音带,磁盘存储或者其他磁存储设备,或者任何其他能用来存储指定信息和能由计算设备100存取的介质。任何这些计算机存储媒介可以是设备100的组成部分。计算设备100也可以有输入设备112,比如键盘,鼠标,笔,声音输入装置,可触输入装置等。输出设备114也可以包括,比如显示器,扬声器,打印机等。这些设备在本领域已非常熟知,没必要在这赘述。
计算设备100也可以包括通信连接116,允许设备100与其他计算设备118通信,比如在网络中。通信连接116是通信媒介的一个例子。通信媒介可以典型地实施计算机可读指令,数据结构,程序块或者其他被调制的数据信号数据,比如载波或者其他传输装置并包括任何传送媒介的信息。术语“调制的数据信号”指信号具有一个或多个自身特征设定或者以在信号编码信息的方式改变。顺便提到示例,不是限定,通信媒介包括有线媒介,比如有线网络或者直接线相连,和无线媒介,比如声音的,射频的,红外的和其他无线媒介。这里所用的计算机可读媒介术语既包括存储媒介也包括通信媒介。
实施例说明
图2举例说明开发系统执行本发明一实施例的功能块图。
该系统包括标记编译程序202和分析程序204。标记编译程序202和分析程序204是软件模块(比如图1所示的程序模块106)设在计算设备中,例如图1所示的计算设备100。标记编译程序202输入标记文件206。在一实施例中,标记文件206是基于可扩充标记语言(XML)文件。简要地如图4-6说明并且下面将会详细描述的标记文件206,包括标记(未示出),指示子定义的部分。如在下文中详细描述的,标记指示子类和相关单元的存在。当遇到这些标记,补充编译程序202开始与分析程序204通信以建立子类。
在一实施例中,由分析程序204所提供的功能也可以提供在标记编译程序202内。在另一实施例中,由分析程序204所提供的功能可以提供用于在标记编译程序202内从一已存在的分析类派生出分析类。派生出的分析类可以包括功能优先于根据本发明定义的每一子类令牌(比如标记)。简要地在图10中说明并在下文中详细描述的优先功能,可以是一系列回叫功能的部分,信号首尾为与子类相关单元的定义。
分析程序204配置为在标记文件206内的分析程序子类定义。标记编译程序202简要地编译标记文件206内的内容。在一实施例中,标记编译程序202将内容转变为保存在被标识二进制文件208中被标识的二进制串。被标识的二进制文件208代表指定在补充文件206中的组成部分树。然而标记编译程序202可能不能将一些内容直接转变,这些内容可被传送到分析程序204。根据本发明定义在标记文件206的子类定义是这内容的一个例子。分析程序204识别一些性能、事件及其类似,在子类定义内并将这些与该术语有关的潜在信息传递到标记编译程序202。
当接收到潜在信息,标记编译程序202将记号添加到与子类定义有关的标记文件206上。标记编译程序202也可以产生代表性源代码212,从那里IL汇编210产生。IL汇编210包括为定义在标记文件206的子类(比如组成)的计算指令。在过去,这些IL汇编是利用软件开发工具产生的,它编译连接用纲领性语言写的源代码。本领域技术人员也知道,在另一实施例,标记编译程序202可以不产生被标记的二进制文件208的情况下产生IL汇编210。
由标记编译202产生的IL汇编210也可以被传统的程序开发工具再利用。另外,IL汇编210也可以在其他标记文件中再利用。在标记文件内再利用IL汇编210的能力在图7中举例说明并在那里描述它的连接。因此,本发明允许开发商有能力采用标记语言很容易建立和扩充组件。根据本发明,一旦一新组件被建立,该新组件呈现为好象利用传统程序语言建立的一样。因此,开发商采用本发明的机制和方法可以建立组件而无需学习语法和一种或多种细微差别的程序语言。
图3是实现本发明一实施例运行时环境的功能块图。
运行时环境包括运行时启动程序302,被标识的二进制阅读程序304,和被标识的二进制装载程序306。当运行时环境302接收到一用于加载特殊资源的请求(比如图2所示的标记文件206)时,运行时启动程序302访问一页面图表308。页面图表308识别标记文件206是否有编译版本(比如被标记的二进制文件208)。如果编译版本存在,运行时启动程序302与被标识的二进制装载程序306通信加载被标识的二进制文件208。在一实施例中,被标识的二进制文件208识别与被标识的二进制文件208相关的IL汇编(IL汇编210)。被标识的二进制装载程序306接着装载识别的IL汇编210。一旦部分或整个被标识的二进制文件208与相关的IL汇编被装载,被标记的二进制阅读程序304开始阅读被标记的二进制文件208和IL汇编210来产生在处理器中执行(如图1所示的处理单元102)的初始化指令。被标记的二进制阅读程序304可以访问元数据310以便确定信息,比如类型,方法和事件等。一般说来,元数据310包括有关方法,字段,性能和事件的信息。每个项目都有它自己的元数据,能读取附加的细节。因此,采用元数据310,被标记的二进制阅读程序304利用在运行时的反射以便有计划地确定在被标记二进制文件208内单元的信息。另外,如下文所描述的,依照本发明,在标记文件206内最初定义的子类可利用依照本发明产生的IL汇编210被直接地执行。
图4-6是示例在标记文件206内标记的突出部分,举例说明依据本发明一实施例为断定子类的规范语法。
图10举例说明代表性源代码的规范源代码表,标记编译程序202可以基于如图4-6所示的标记部分产生。在一实施例,标记编译程序202实际上可以产生包含有代表性源代码的文件。当开发商设置一调试标志时可发生。包含有代表性的源代码的文件接着允许开发商确定可能的在标记文件206文本内的问题或在标记编译程序202内的问题。在另一实施例,代表性代码可以不在文件内保存。对于此实施例,标记编译程序202可以产生可有也可没有第一代表性源代码的被标识二进制文件208和IL汇编210。
总之,图4-6系列逐量地描述了为根据本发明在标记内断定子类的很多方面。图4举例说明子类及其分层结构的规范语法。图5举例说明为子类定义标识符,代码和构造程序的规范语法。图6是举例说明为子类定义性能和事件的规范语法。现在详细描述每个图。
图4举例说明子类及其分层结构的规范语法。标记的突出部分400(比如子类定义)包括超类标识402(比如,“按键”)。在下面的描述中,每个标识(比如超类标识402)有一个相应的结束标志。方便起见,结束标识在撰写说明中不明确指出,而在相关图中说明。标记400包括名称空间属性404,名称空间声明定义406和几个编译程序标识(比如标识408和410)。名称空间属性404识别名称空间(比如,“系统.控制”)和在其上有超类(比如,按键)所在的汇编。名称空间声明的定义406指示在标记400内的任何属性都包括前缀“def:”,代表编译程序需要执行编译操作的编译程序标志
比如,标识408(在下文指示为语言标识408)指示编译程序利用分配到语言408标识的语言(比如,C#)来产生IL汇编。语言标志408可以有被指定的很多程序语言中的任何一种,比如,C,C++及其类似。该标识410(在下文指如def:类标记410)指示编译定义子类利用指定为def:类标识410的名称414(比如,吾键)。该def:类标识410也可以包括子类名称空间412,识别应该与新类有关的名称空间(比如,“MyControlLIb”)。因此,图4,开发商断定名称为“吾键”的新类,扩充在“系统.控制”名称空间的“吾键”类。新子类将与“MyControlLIb”名称空间有关。
在图4所例的标记400内,一单元声明标识420(比如,“图象”)被定义。因为一特定名称空间在单元声明标识420内没有定义,名称空间属性404也定义与单元声明标识420有关的单元(比如,“图象”)位置。单元声明标识420包括一单元421和一源属性422。源属性422包括一特性424(比如,“源”)和值426(比如,“幸福脸.jpg”)。因为单元声明标识420是在用于子类的子类定义内被子类定义为“吾键”,当子类被举例时,与单元声明标识420有关的单元将被举例说明。另外,与单元声明标识420有关的单元包括在新子类的子收集内,换句话说,子类是与单元声明标识420有关单元的家长。因此,本领域技术人员知道标记400允许开发商去表达分层结构,用一种方式允许编译程序产生单元树,起根于正被定义的子类(比如,“吾键”)。
图5举例说明为子类定义标识符,代码和构造程序的规范语法。标记500的突出部分包括上面所述的标记400和为定义标识符,代码和构造程序的标记。为阅读方便,在图4示例的参照数字和上述部分没有在图5示出,除非有助于描述新的方面。在图5中单元声明标识420进一步包括属性比如标识符属性520和事件属性526。标识符属性520包括标识符特性521(比如,“ID”)和标识符值523(比如,“img1”)。标识符属性520示例一规范机制为根据本发明为子类定义标识符。
事件属性526包括事件触发527(比如“数据装载”)和事件值529(比如,“加载中”)。当事件触发527发生时,事件触发527指定被监视的事件且事件值529指定执行的方法。事件值529与方法530有关(比如“加载“功能)。方法530可使用程序语言撰写。方法530可涉及在标记500内定义的类与子类的示例。当方法530在标记文件内使用程序语言写时,方法530与代码标识540有关。代码标识540允许开发商添加片段代码到子类定义主体上。在一实施例,代码可跟随代码标识540并是一可呼叫方法或者事件处理器。在标记500中,比如,加载功能530作为用于通过图象控制引起的数据装载事件的事件处理。其他片段代码也可以加到子类定义主体,比如图5所示的自定义初始化功能550。
500标记也可以包括构造程序标记542。构造程序标记542允许开发商撰写补充为子类所产生的缺省指令的补充指令。在一实施例中,补充构造程序是由产生的缺省构造程序执行的最后行为。补充构造程序可以包含在指令时间影响子类行为的代码。开发商可以在补充构造程序中呼叫超类指令。如图5所示的补充指令呼叫自定义初始化550,它是用户定义的私人方法。
图6举例说明定义子类特性和事件的规范语法。标记600的突出部分包括如上所述的标记400和500以及为定义子类特性和事件的标记。为阅读方便,图4-5举例说明的并如上描述的参照数字不在图6中示出,除非有助于新方面的描述。
标记600包括特性标识610,它允许特性在子类中被定义。该特性作为众多子类中的一员。特性标识610可以包括一个或多个属性,比如名称属性612,类型属性614,缺省值属性616,和标志属性618,名称属性612指定特性的名称。在一实施例,名称是灵感格式并且运行时启动程序对所用名称的字符没有限制的。对注册名称的所有者,名称必须是唯一的。类型属性614指定特性值的类型。该类型包括固有的,用户定义的,结构,类,接口,可例举的,及其类似。当性能被例举时,缺省值属性616指定分配值。当性能被举例时,标志属性618指定由外包产生的方法类型。该标志可以有控制性能特点的能力,比如只读,子单元可继承性,私有及其类似。
标记600也包括事件标识620。事件标识620允许事件定义在子类。事件标识620可以包括属性,比如名称属性622,路径属性624,标识属性626及其类似。名称属性622指定指代该事件的字符串。当xml文件使用子类时,该xml文件使用该字符串缚上定义代码的合适应用开发商。路径属性624指定一方法,确定升起事件的树单元。标识属性626指定与事件有关的其他特征。比如,为标记600,标记编译程序将产生能够事件呼叫DblClick的代码并包括与事件有关的信息,比如支持的行程安排,标识及其类似。本领域技术人员知道与该属性有关的名称和数值可以被改进在不脱离本发明的范围下。
标记600也可以包括事件处理声明630。事件处理声明630有与事件处理有关的改进632,比如公共/私有,代表,返回类型及其类似。在图6,事件处理声明630声明当相关事件发生时,被称作事件处理(比如方法)(比如“DblClickEventHandler”)。
其他标志也可以在标记文件内定义。比如,跟标志(比如,“def:Library”)可以被用来通知编译程序和/或者分析程序来在各自文件定义子类,在一个文件和其他子类定义该子类及其类似。名称空间可以声明商业单元,在根标志定义的所有类及其类似。
图7示例标记文件的突出部分,举例说明为从标记文件内采用子类的规范语法。标记700包括根单元702(比如,流程板单元),缺省名称空间声明704,名称空间定义前缀706和单元708。大家知道单元708可以参考自定义部分,它是采用上面指定的语法建立的。缺省名称空间声明704不用前缀为标志指定缺省名称空间。在示例的标记700,缺省名称空间声明704指“系统.控制”名称空间。名称空间定义前缀706指定可以找到的自定义部分或单元的位置。在示例的标记700,名称空间定义前缀706指“MyControlLib”。单元708包括类名称710(比如,“MyControlLib”),标识符712和文本串714。类名称710指为该单元所举例说明的类。标识符712指单元并包括名称(比如,“ID”)和数值(比如,“button1”)。在运行时(比如,“button1”),该数值成为示例的类名称710的名称。
所举实施例的一般操作
图8是一逻辑流程图,举例说明一处理800根据本发明实施例,编译声明定义子类。举例的标记如图4-6所示,还有如图10的代表性源代码,用来在与图8相连中描述处理800。因为容易辨认,在比较图10与标记600后,本发明允许复杂子类声明产生不需要开发商理解所画线的程序语言。在图10中的代表性代码是C#源代码。然而,根据本发明,标记编译程序可以利用任何程序语言产生有代表性的代码。
处理800从801块开始,其中标记程序编译标记文件并遇到有子类定义的标记。标记编译程序可以确定具有由任何机制被遭遇的子类定义,比如没有辨认标记为任何其他形式,辨认一子类标志(比如,def:类)及其类似。比如,在标记400,标记编译程序可以处理几种状态在遇到子类标记之前(比如def:类标识410),能识别子类定义。在另一实施例,在其他状态前子类标记可以被遇到,比如当子类没有指定一基地类(比如,按钮)。一般说来,子类标记可以出现在任何地方,一单元标记能出现在标记内。一旦标记识别为具有子类定义,处理在块802处继续。
在块802处,子类标记被处理。参照图4所描述的,子类标记(也可参照def:类标记410)被分配一名称414,也可以包括子类名称空间412。基于这一信息,代表性的代码,比如图10第1行,可以产生汇编。另外,有分配名称的类产生,比如图10第5行所示。第5行将扩充为其他产生代码,一旦附加状态(比如名称空间和超类)处理了。如子类标记处理部分,处理识别子类是否从任一类(即超类)扩充并得到与超类相关信息。在图4中,正产生的子类“吾键”是从如定义超类标记402“按钮”。因此,图10第5行包括代表性代码,从所示的按钮扩充为吾键。
另外,子类缺省构造程序产生。再说,在处理附加状态中,这缺省构造程序可以扩充附加的代表性代码。图10第23-23和26行对应于所产生的代表性代码。然而,“this._Initialize_This()”是在处理另一状态之后添加的代码将在下文描述。
在块804处,检索标记的下一状态。下一状态可以是子类标记状态之前亦可是之后,该状态依赖于在子类定义内子类标记状态的位置。一旦检索到下一状态,处理在判决块806继续。
在判决块806处,做出确定是否该状态定义一个类。如前所提到的,本发明允许陈述性表达层级。在一实施例,定义另一个类(即单元)的状态是将发生在子类标记状态后的子类的后代。此时,假设目前状态没有定义类,处理在块808继续。
在块808处,处理该状态。在子类定义内有各种各样的状态会发生。这些状态可以以不同的顺序发生。涉及每一状态类型的处理将在下文详细描述。然而,一般说来,处理的每一状态将导致子类定义附加代表性代码的产生。一旦其中一种状态在块808被处理,处理在判决块810继续。
在判决块810处,做出确定是否任一状态保持处理为子类定义。如果这有另一状态,通过块804-808返回处理环路并处理该状态。一旦子类定义内的所有的状态被处理过,处理从判决块810至块802继续。
在块812处,在上述处理产生的代表性代码被用来为子类定义产生IL汇编。开发商可以指定在一个或多个编译程序标记状态(块820)纲领性语言来用,当产生代表性编码时,也可指定哪一个存储在子类定义的汇编文件及其类似。一旦该IL汇编或者IL汇编组产生,处理完成。如前面所提到的,上述产生的汇编现在可用来执行,利用传统的程序语言,利用根据本发明的标记状态及诸如此类。
汇编表现为采用纲领性的语言撰写的。
回到判决块806,如果状态开始一新类(比如单元)定义,那么处理在块814处继续。在块814处,与新类有关的状态被处理,采用为每一状态在块808内的处理直到与新类有关的所有状态被处理。比如,在图5,状态520,526,422为新类“图象”被处理。图象接着是子类“吾键”的后代。处理在块804继续,继续处理与子类有关的状态。
现在,回到块808,用于状态(块820-832)的每一个别类型的处理可以发生在描述的子类定义内。在块820,编译程序标记状态被处理。一般说来,编译程序标记状态提供信息给标记编译程序有关汇编是如何被产生的。比如,在图4,语言标记408是编译程序标记状态,当产生代表性代码时,通知标记编译程序采用程序语言。在图4,语言标记408被赋予C#,因此,在图10举例说明的代表性代码是C#源代码。
在块822,定义名称空间的状态被处理。那么这些名称空间包括在代表性代码,比如如图10第2和3行所示。
在块824,为一个类定义一标识符(id)的状态被处理。在标记文件内的任何id属性,标记编译程序产生一字域为相关类。产生的该字域类型与定义的id属性类的相同。比如,在图5,当与图象类有关的状态处理时,一id属性520被遇到。因此,如图10第7行所示,标记编译程序将为吾键类产生代表性代码,有一字域被定义为:
私人系统.控制.图象.img1;
在运行时期间,字域初始化为在InitComponent()初始化组成方法产生的相应类型(比如,图象)的情况。结果,在吾键类中的任何编码可以通过该类通过id值访问在其单一层级中的任何其他单元情况。字域的初始化过程如图10第37行所示。
在块826处,定义类性能的状态被处理。对于在标记文件内被定义的任何性能,标记编译程序产生用于性能的代表性的源代码并且如果需要则注册该性能。比如,在图6中,标记600包括具有各种各样属性612-618的性能标记610。性能标记610将通知标记编译程序为该性能性能标记610的跟踪状态。属性612-618接着被作为性能状态读出。标记编译程序将为“列表”性能产生代表性代码来注册如图10第9-12行所示的吾键类性能。标记编译程序也将产生如图10第28-30行所示定义性能的代表性代码。第28-30行举例说明如何名称属性612成为代表性代码的性能名称并类型属性614成为代表性代码的性能类型。
在一实施例中,通过要求类型转换程序为性能类型处理产生用于性能值的代码,执行代码在运行时利用反射和转变实际对象性能类型情况的数据串。在另一实施例,处理800为性能要求类型转换以使得到实际对象值并转换该值为一举例说明程序对象。该举例说明程序对象包括充足的信息因此标记编译程序能反映该对象来产生代表性代码,它能产生该值类型的新情况,如指定在相关性能标记的属性。在图19第28-30行举例说明列表性能如何在运行时通过分配的列表性能值设定吾键的情况。被分配值可以在标记(如图7所示)陈述性地指定或者利用任何程序语言纲领性地指定。
在块828中,定义类的事件状态被处理。对于事件状态,标记编译程序为事件产生代表性代码。事件可以在标记内利用各种各样的机制定义,比如如图5所示的事件属性526和如图6所示的事件标记620。首先,描述利用事件属性的机制。该事件属性包括事件触发和事件值。与事件相应的事件触发和与方法相应的事件值当事件触发发生时被执行。参照图5,事件值529(“装载中”)被添加为如图10第38-40行代表性代码定义“这.装载中”的事件处理一样的新系统.控制.数据装载的事件处理。事件触发527(“数据装载”)被添加为象图10第38行代表性代码定义添加处理第一参数事件一样的新系统.控制.数据装载的事件处理。添加处理的其他参数可以采用缺省值或者可以在标记文件内指定。
现在描述采用事件标记620的机制。事件标记620包括一事件名称属性或者其他属性。被分配给事件名称属性的名称被注册为事件。比如,参照图6,“Db1Click”是被分配给事件名称属性的名称。因此,“Db1Click”是注册事件方法的第一参数,在图10第14-16行产生。再说注册事件方法的其他参数可以采用缺省值或者可以在标记文件利用其他属性指定。在运行时期间,根据一个实施例,事件被采用识别DB1点击事件处理类型的反射钩住并定在该方法。
在块830中,定义代码的状态被处理。定义代码的状态跟随编译程序标记状态(块820),比如代码标记。这些状态用一种程序语言来撰写并将以代表性代码出现。比如,图5举例说明方法530和初始自定义功能550。方法550和初始自定义功能各自呈现在图10第18-19和21行。
在块832,定义补充构造程序的状态被处理。又一次,定义补充构造程序的状态跟随编译程序标记状态(块820),比如构造程序标记。标记编译程序产生补充构造程序(在图10的this._Initialize_This())并在标记构造程序内添加该状态。比如,在图5,构造程序标记542之后的状态称为“CustomInit()”。因此,在图10第33行,补充编译程序将“CustomInit()”添加到在代表性源代码中的补充构造程序上。
本领域技术人员能懂得在不脱离本发明下,当处理块804-810时,块812可以增量地执行。另外,依赖分析程序204和标记编译程序202的执行功能,可以在处理800过程中在分析程序204和标记编译程序202之间有回叫信号。
图9是根据本发明一实施例的一逻辑功能图,举例说明运行时处理900利用从标记文件内声称的子类。如图7所示的示例标记被用来与图9描述的处理900相连接。处理900从块901开始,在那儿运行时启动程序接收特殊资源(比如,标记文件)请求并确定存在特殊资源的编译程序版本。比如,在图7,假定标记700没有被预先编译为被标记的二进制文件,当标记编译程序遇到单元708,标记编译程序将确定具有相关二进制文件和IL汇编的吾键类。这与标记的二进制有关文件包括标记的吾键类属性利用处理900将被处理。相关的二进制文件和IL汇编可以采用本发明产生。处理在块902继续进行。
在块902处,标记的二进制文件被装载。该标记的二进制文件可以被逐量地或者整个地装载。被标记的二进制文件可以识别与需要装载的被标记的二进制文件有关的IL汇编。参照图7,比如,与吾键类有关的IL汇编被装载。处理在块904处继续。
在块904处,从标记的二进制文件找回一标记。如前所述,在新运行时环境,产生的标记二进制文件独立于用来产生二进制文件的程序语言。因此,运行时环境可以不关心最初用来产生二进制文件的程序语言来处理标记的二进制文件。处理在块906处继续。
在判决块906处,做出是否找回的标记是一事件的决定。如果该标记不是一事件,处理在块908处继续。
在块908处,处理该标记。如前所述,该标记的处理不依赖于产生标记二进制文件的方式。换句话说,在标记的二进制文件的标记处理的标记从标记文件内陈述性地产生或者利用一程序语言将以同样的方式处理。因此,因为对本领域技术人员在标记的二进制文件内的标记处理是已知的,标记处理不需要在这里做赘述。处理在判决块910继续。
在判决块910处,做出是否在标记二进制文件内还有标记的决定。如果还有标记,处理还回到块904并做如前所述的处理。在另一方面,如果没有更多标记,处理结束并到末尾块。
回到判决块906,如果该标记是一事件,处理在块912继续。在块912,与标记二进制文件有关的元数据被装载。元数据包括类型、资源、方法及其类似的说明。处理在块914处继续。
在块914处,利用元数据和反射,处理找到为该事件的目标单元类型。这涉及访问元数据并通过每一字域确定类型。处理在块916处继续。
在块916处,对事件验证目标单元类型。这保证事件是有效事件。如果事件对目标单元类型不是有效事件,则产生差错。处理回到块918。
在块918处,反射被用到目标单元类型来得到接下来执行该事件的方法。执行该事件的方法涉及在有关IL汇编内执行代码。因此,参照图7,一旦吾键成为示例并该事件被找到,事件方法(“Dv1ClickEvent”)被附加。附加一事件处理(比如,Db1CllickEventHandler)到该事件(比如,Db1Click)。处理在判决块910继续并处理如前所述。
因此,如上所述,本发明提供机制在标记文件内声明定义子类并从标记文件内利用该子类。这允许开发商集中更多精力在利用组件的方法,而不担心如何执行用任何一种程序语言编写的组件。
以上详述,例子和数据提供一完整的生产和使用本发明部分的描述。不脱离本发明精神和范围下,本发明的很多实施例可以实现,本发明体现在下文的从属权利要求中。

Claims (27)

1.一种用于生成可执行汇编的计算机可执行方法,该方法包括:
在标记文件内陈述性地定义子类定义,所述子类定义与一模式关联,其中所述模式指定了当编译所述模式时使用的程序语言,所述模式包括定义与一对象类型相关联的名字的子类标记;以及
使用所指定的程序语言编译该模式为可执行汇编,所述可执行汇编对在执行汇编时与在子类定义内所定义子类有关的对象进行实例化。
2.如权利要求1所述的计算机可执行方法,所述模式是基于可伸展标记语言XML的模式。
3.如权利要求1所述的计算机可执行方法,所述模式包括语言标记,用于指定当编译子类定义时使用的程序语言。
4.如权利要求3所述的计算机可执行方法,所述模式进一步包括在标记文件描述代码的代码标记,该代码直接被编译为可执行汇编。
5.如权利要求4所述的计算机可执行方法,所述被直接编译的代码是基于语言标记内指定的程序语言语法。
6.如权利要求1所述的计算机可执行方法,所述模式包括一超类标记,从指定超类中派生出子类。
7.如权利要求6所述的计算机可执行方法,所述模式包括一超类名称空间属性,指定超类所驻留的名称空间。
8.如权利要求1所述的计算机可执行方法,所述模式包括一指定子类的子类标记。
9.如权利要求1所述的计算机可执行方法,所述模式包括一构造程序标记,指定当对该对象实例化时执行的一个或多个补充操作。
10.如权利要求1所述的计算机可执行方法,所述模式包括一事件标记,指定变成与实例化时的对象相关的一事件和一对应的事件处理程序。
11.如权利要求1所述的计算机可执行方法,所述模式包括一性能标记,指定一性能,当实例化该对象时,该性能成为对象内的一员。
12.如权利要求1所述的计算机可执行方法,所述模式包括一元素声明,指定子类的子元素。
13.一种用于产生可执行汇编的计算机执行方法,该方法包括:
在标记文件内识别子类定义,该子类定义定义一子类,且所述子类定义与一模式关联,其中所述模式指定了当编译所述模式时使用的程序语言,所述模式包括定义与一对象类型相关联的名字的子类标记;以及
使用所指定的程序语言产生基于该子类定义的汇编,该汇编可被执行以便产生与子类有关的对象实例。
14.如权利要求13所述的计算机执行方法,所述识别子类定义包括分析子类标记,该子类标记包括为定义名称的子类名称属性,该名称与实例化的对象的类型有关。
15.如权利要求13所述的计算机执行方法,所述基于子类定义产生汇编包括分析超类标记,该超类标记定义派生出子类的超类,根据所述程序语言指定使用语法的继承,编译语法为汇编的一部分。
16.如权利要求13所述的计算机执行方法,所述基于子类定义产生汇编包括分析构造程序标记,定义当实例化对象时执行的至少一补充操作,该补充操作是汇编的一部分。
17.如权利要求13所述的计算机执行方法,所述基于子类定义产生汇编包括分析事件标记,为子类产生一事件定义和相对应的事件处理程序。
18.如权利要求13所述的计算机执行方法,所述基于子类定义产生汇编包括分析性能标记,当实例化对象时,定义一性能为对象内的一员。
19.一种用于从标记文件的子类定义产生汇编的计算机系统,该系统包括:
处理器;和
存储器,该存储器被分配给计算机可执行模块,该模块被装载到存储器,由处理器执行该计算机可执行模块的操作包括:
在标记文件内识别子类定义,该子类定义定义一子类,且所述子类定义与一模式关联,其中所述模式指定了当编译所述模式时使用的程序语言,所述模式包括定义与一对象类型相关联的名字的子类标记;
使用所指定的程序语言产生基于该子类定义的汇编,该汇编可被执行以便产生与子类有关的对象实例。
20.如权利要求19所述的计算机系统,所述识别子类定义包括分析子类标记,该子类标记包括为定义名称的子类名称属性,该名称与实例化的对象的类型有关。
21.如权利要求19所述的计算机系统,所述基于子类定义产生汇编包括分析构造程序标记,定义当实例化对象时执行的至少一补充操作,该补充操作是汇编的一部分。
22.如权利要求19所述的计算机系统,所述基于子类定义产生汇编包括分析事件标记,为子类产生一事件定义和与事件相对应的处理程序。
23.如权利要求19所述的计算机系统,所述基于子类定义产生汇编包括分析性能标记,当实例化对象时,定义一性能为对象内的一员。
24.一种用于产生可执行汇编的设备,该设备包括:
在标记文件内识别子类定义的装置,该子类定义定义一子类,且所述子类定义与一模式关联,其中所述模式指定了当编译所述模式时使用的程序语言,所述模式包括定义与一对象类型相关联的名字的子类标记;和
使用所指定的程序语言产生基于该子类定义的汇编的装置,该汇编可被执行以便产生与子类有关的对象实例。
25.如权利要求24所述的设备,所述识别子类定义的装置包括分析子类标记的装置,该子类标记包括为定义名称的子类名称属性,该名称与实例化的对象的类型有关。
26.如权利要求24所述的设备,所述基于子类定义产生汇编的装置包括分析超类标记的装置,以定义派生出子类的超类,根据所述程序语言指定使用语法的继承的装置,及编译语法为汇编的一部分的装置。
27.如权利要求24所述的设备,所述基于子类定义产生汇编的装置包括分析构造程序标记装置,定义当实例化对象时执行的至少一补充操作,该补充操作是汇编的一部分。
CNB03136764XA 2003-02-28 2003-05-19 在标记中用于定义和使用子类说明的系统和方法 Expired - Fee Related CN100454244C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/377,313 US7120618B2 (en) 2003-02-28 2003-02-28 System and method for defining and using subclasses declaratively within markup
US10/377,313 2003-02-28

Publications (2)

Publication Number Publication Date
CN1525317A CN1525317A (zh) 2004-09-01
CN100454244C true CN100454244C (zh) 2009-01-21

Family

ID=23488596

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB03136764XA Expired - Fee Related CN100454244C (zh) 2003-02-28 2003-05-19 在标记中用于定义和使用子类说明的系统和方法

Country Status (15)

Country Link
US (1) US7120618B2 (zh)
EP (1) EP1452962B1 (zh)
JP (1) JP4806158B2 (zh)
KR (2) KR100889671B1 (zh)
CN (1) CN100454244C (zh)
AU (1) AU2003204197B2 (zh)
BR (1) BR0301738A (zh)
CA (1) CA2428558C (zh)
HK (1) HK1066616A1 (zh)
MX (1) MXPA03004411A (zh)
MY (1) MY136473A (zh)
NO (1) NO329240B1 (zh)
RU (1) RU2347269C2 (zh)
TW (1) TWI327701B (zh)
ZA (1) ZA200303680B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418659B2 (en) * 2003-02-28 2008-08-26 Microsoft Corporation System and method for declaring a resource within a markup document
US7725884B2 (en) * 2003-02-28 2010-05-25 Microsoft Corporation System and method for compiling markup files
US7890928B2 (en) * 2003-07-26 2011-02-15 Pilla Gurumurty Patrudu Mechanism and system for representing and processing rules
US20050154978A1 (en) * 2004-01-09 2005-07-14 International Business Machines Corporation Programmatic creation and access of XML documents
US20070136658A1 (en) * 2005-11-29 2007-06-14 International Business Machines Corporation Handling events in a descriptive context
US9128727B2 (en) * 2006-08-09 2015-09-08 Microsoft Technology Licensing, Llc Generation of managed assemblies for networks
US8380742B2 (en) * 2006-10-10 2013-02-19 Microsoft Corporation Integration of database reporting with ERP systems
US7765241B2 (en) * 2007-04-20 2010-07-27 Microsoft Corporation Describing expected entity relationships in a model
US8880564B2 (en) * 2007-10-11 2014-11-04 Microsoft Corporation Generic model editing framework
US7530060B1 (en) * 2008-01-08 2009-05-05 International Business Machines Corporation Methods and computer program product for optimizing binaries with coding style formalization
US9584877B2 (en) * 2011-06-16 2017-02-28 Microsoft Technology Licensing, Llc Light-weight validation of native images
US9015661B1 (en) 2011-06-23 2015-04-21 The Mathworks, Inc. Restricting class inheritance relationships
US9158505B2 (en) * 2014-01-09 2015-10-13 Microsoft Technology Licensing, Llc Specifying compiled language code in line with markup language code
US20240111555A1 (en) * 2022-10-04 2024-04-04 International Business Machines Corporation Unknown object sub-class identification

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6083276A (en) * 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
WO2001095155A2 (en) * 2000-06-06 2001-12-13 Groove Networks, Inc. Method and apparatus for efficient management of xml documents
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans
US20030037311A1 (en) * 2001-08-09 2003-02-20 Busfield John David Method and apparatus utilizing computer scripting languages in multimedia deployment platforms

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6342907B1 (en) 1998-10-19 2002-01-29 International Business Machines Corporation Specification language for defining user interface panels that are platform-independent
US6732330B1 (en) * 1999-09-30 2004-05-04 International Business Machines Corporation Scripting language blocks to support multiple scripting languages in a single web page
GB0011426D0 (en) * 2000-05-11 2000-06-28 Charteris Limited A method for transforming documents written in different XML-based languages
US6957394B1 (en) * 2000-12-01 2005-10-18 Microsoft Corporation Rendering controls of a web page according to a theme
US20020091818A1 (en) * 2001-01-05 2002-07-11 International Business Machines Corporation Technique and tools for high-level rule-based customizable data extraction
KR20020061888A (ko) * 2001-01-18 2002-07-25 박철만 엑스엠엘 응용프로그램의 개발방법
US20040064825A1 (en) * 2002-09-30 2004-04-01 Timothy Lim Method and system for object system interoperability
US20040064826A1 (en) * 2002-09-30 2004-04-01 Timothy Lim Method and system for object system interoperability

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6083276A (en) * 1998-06-11 2000-07-04 Corel, Inc. Creating and configuring component-based applications using a text-based descriptive attribute grammar
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans
WO2001095155A2 (en) * 2000-06-06 2001-12-13 Groove Networks, Inc. Method and apparatus for efficient management of xml documents
US20030037311A1 (en) * 2001-08-09 2003-02-20 Busfield John David Method and apparatus utilizing computer scripting languages in multimedia deployment platforms

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
JosML-一个用于实现Java对象序列化的XML模型. 何成万,余秋惠.计算机工程,第28卷第1期. 2002
JosML-一个用于实现Java对象序列化的XML模型. 何成万,余秋惠.计算机工程,第28卷第1期. 2002 *
基于Java的文档对象模型的技术. 陈晓峰,王世安.抚顺石油学院学报,第22卷第2期. 2002
基于Java的文档对象模型的技术. 陈晓峰,王世安.抚顺石油学院学报,第22卷第2期. 2002 *
用UML设计XML文档模式. 王甲民,杨子翔,沈均毅.计算机工程与应用. 2002
用UML设计XML文档模式. 王甲民,杨子翔,沈均毅.计算机工程与应用. 2002 *
适合于关系数据库存储的XML文档分解. 王利杰,金连甫,张玉龙.计算机工程与设计,第23卷第10期. 2002
适合于关系数据库存储的XML文档分解. 王利杰,金连甫,张玉龙.计算机工程与设计,第23卷第10期. 2002 *

Also Published As

Publication number Publication date
HK1066616A1 (en) 2005-03-24
KR20040077410A (ko) 2004-09-04
CN1525317A (zh) 2004-09-01
NO20032232L (no) 2004-08-30
RU2347269C2 (ru) 2009-02-20
JP4806158B2 (ja) 2011-11-02
AU2003204197B2 (en) 2009-10-01
KR100889671B1 (ko) 2009-03-19
EP1452962A3 (en) 2007-01-10
KR100942322B1 (ko) 2010-02-12
NO329240B1 (no) 2010-09-20
EP1452962A2 (en) 2004-09-01
EP1452962B1 (en) 2018-01-24
CA2428558C (en) 2013-01-22
US20040172617A1 (en) 2004-09-02
BR0301738A (pt) 2004-10-26
MY136473A (en) 2008-10-31
MXPA03004411A (es) 2005-08-26
NO20032232D0 (no) 2003-05-16
TWI327701B (en) 2010-07-21
KR20090024229A (ko) 2009-03-06
JP2004265371A (ja) 2004-09-24
TW200416569A (en) 2004-09-01
ZA200303680B (en) 2004-08-13
CA2428558A1 (en) 2004-08-28
AU2003204197A1 (en) 2004-09-16
US7120618B2 (en) 2006-10-10

Similar Documents

Publication Publication Date Title
US8473971B2 (en) Type inference and type-directed late binding
CN100354823C (zh) 用于创建、管理和使用代码段的系统和方法
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
KR100942322B1 (ko) 마크업 내부에서 명시적으로 서브클래스를 정의하고 이용하는 시스템 및 방법
CN110704063B (zh) 编译和执行智能合约的方法及装置
CN110704064B (zh) 编译和执行智能合约的方法及装置
CN110688122B (zh) 编译和执行智能合约的方法及装置
US5428780A (en) Initializing programs having dependencies
JP2002024032A (ja) 複数言語のコンパイル方法及びシステム
CN1981266A (zh) 为优化的程序生成展开信息
KR101597599B1 (ko) 소스 위치가 결여된 코드 세그먼트들을 가지는 소스 코드를 모델링하기 위한 방법
CN110770698A (zh) 用于动态代码优化的差异静态分析
US7716656B2 (en) Nullable and late binding
CN107562430B (zh) 一种针对移动π演算语言的文件处理功能的编译方法
Fülöp et al. Code comprehension for read-copy-update synchronization contexts in C code
McGrath C# Programming in easy steps: Updated for Visual Studio 2019
CN114757163A (zh) 基于资源的pe文件相似性比对方法
Merks et al. Essential emf
II User's Manual

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1066616

Country of ref document: HK

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1066616

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150427

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150427

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090121

Termination date: 20190519

CF01 Termination of patent right due to non-payment of annual fee