CN1361891A - 用于可扩展宏语言的方法和系统 - Google Patents

用于可扩展宏语言的方法和系统 Download PDF

Info

Publication number
CN1361891A
CN1361891A CN99812038A CN99812038A CN1361891A CN 1361891 A CN1361891 A CN 1361891A CN 99812038 A CN99812038 A CN 99812038A CN 99812038 A CN99812038 A CN 99812038A CN 1361891 A CN1361891 A CN 1361891A
Authority
CN
China
Prior art keywords
keyword
grand
code
macrolanguage
macro
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.)
Pending
Application number
CN99812038A
Other languages
English (en)
Inventor
塔德A·德弗勒
埃里克·明茨
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.)
UNITED IMAGINATIVE COMPUTER CO
CA Inc
Original Assignee
UNITED IMAGINATIVE COMPUTER CO
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 UNITED IMAGINATIVE COMPUTER CO filed Critical UNITED IMAGINATIVE COMPUTER CO
Publication of CN1361891A publication Critical patent/CN1361891A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Abstract

本发明提供了一种用于可扩展宏语言的方法和系统。这种用于提供可扩展宏语言的系统包括语法分析程序以及宏管理程序(110),用于处理先前未在宏语言中定义的宏命令。语法分析程序(102)对宏语言表达式中的关键字进行分析,并识别出一个或多个代表先前未在宏语言中定义的宏命令的关键字(116)。宏管理程序(110)接收宏表达式中的关键字,并且在关键字注册表中检索一个与该关键字相关的可执行代码或过程(112)。可执行代码(112)被运行以处理由该关键字所代表的宏命令。模板语言注册表可被扩充以包括用于宏语言扩充的任何关键字及其相关的代码。

Description

用于可扩展宏语言的方法和系统
本专利申请要求题为“建模工具系统及方法”、于1998年10月16日提交的美国专利申请No.60/104,682的权益。
本专利申请涉及到共同待审的美国专利申请No.__(代理人卷号#22074661-25531),该申请题为“用于确定两个或多个模型之间差异的方法”且与本申请相同的日期提交,并且被整体引入本文以作为参考。
本专利申请涉及到共同待审的美国专利申请No.__(代理人卷号#22074661-25532),该申请题为“用于模型效果分析的方法”且与本申请在相同的日期提交,并且被整体引入本文以作为参考。
本专利申请涉及到共同待审的美国专利申请No.__(代理人卷号#22074661-25534),该申请题为“用于通过SQL输入对分级数据存储进行访问的方法及装置”且与本申请在相同的日期提交,并且被整体引入本文以作为参考。
本专利申请涉及到共同待审的美国专利申请No.__(代理人卷号#22074661-25535),该申请题为“用于建模工具的装置及方法”且与本申请在相同的日期提交,并且被整体引入本文以作为参考。
本发明一般涉及计算机语言处理程序。具体来说,它涉及到一种可扩展宏语言。
宏是一个命令集,它可被运行以执行一给定的任务。这些任务的例子包括在字处理程序中插入常用的名称和地址,或者执行一系列的键盘敲击以生成一个文件。用宏来执行的任务一般都是重复性的任务,因而在实质上就可以通过执行宏来代替人工地重复命令,从而节省大量时间。
近年来,各种不同的应用程序都允许用户在允许范围的限制内(即,在特定的应用限制之内)编写宏和脚本。例如,字处理程序一般都允许用户通过对一系列的键盘敲击进行录制,以创建一个宏并在以后重新播放。其它的应用程序也允许用户创建宏以在应用软件限制范围之内对数据进行检索和操纵。因此,这些应用程序都包括一套受限制的宏,例如,用于记录键盘敲击的宏、用于检索数据的宏。而用户一般也被限制成只能使用由应用程序所提供的宏。
但是,每个使用应用程序的用户通常都有独特的一套指令或命令,用户希望在应用程序中将这些命令或指令作为以前未被提供的宏。由于这些宏一般都是被硬编码进入应用程序或是应用程序内的宏语言中的,所以目前将额外的宏引入应用程序的唯一有效的方法就是通过在一个新的宏可被使用之前修改源代码并对其进行重新编译,从而将这个新的宏硬编码进此应用程序中。但是,这种方法通常会带来问题,因为用户未被授予进入宏语言或应用程序的源代码来进行修改的权利。另外,对程序开发员来说,试图通过定制应用程序以引入每个用户所希望使用的宏来迎合每个用户的喜好将是沉重的负担。
因此,非常需要有一种能够允许用户通过修改和扩展语言以在使用宏语言时引入他们的喜好的可扩展宏语言。另外,还极为需要使用户能够对宏进行扩展而无需修改或进入宏语言的源代码,因为源代码被视为一种知识产权,它是不对用户公开的。
为了解决现有技术所述宏语言处理程序中的上述问题,本发明提供了一种可扩展宏语言,它允许用户通过编写新的宏命令以引入满足用户特定需求的过程,而且无需修改任何宏语言处理程序的源代码。这种可扩展宏语言能够通过对该语言所未知的新的宏命令进行识别并将新宏命令与保存在注册表(即,一个储存库)中的过程调用相关联起来,从而实现宏语言的动态扩充。
本发明中还提供了一种用于将新宏命令动态注册进注册表的机制,从而实现了可扩展性。为了注册新的宏命令,用户可以在注册表中输入代表此新宏命令的关键字及相关代码或过程,以用于通过可扩展宏语言来执行它。
本发明还为可扩展宏语言定义出了一种简单的语法,以用于对新宏命令的识别,而且无需知道它们所执行的功能是什么。
根据本发明的目的,提供了一种语法分析程序和宏管理程序(macro handler),以用于处理先前未在宏语言中定义的宏命令。宏语言中先前未定义或从未定义的宏命令指的是那些在发布和提供给用户时未被引入宏语言的有效命令集的宏命令。语法分析程序对宏语言表达式中的关键字进行分析,并识别出一个或多个代表先前未在宏语言中定义的宏命令的关键字。宏管理程序接收宏表达式中的关键字,并在关键字注册表中对与该关键字相关的可执行代码进行检索。运行可执行代码以处理由该关键字所代表的宏命令。关键字注册表可被扩充以引入任何用于扩充宏语言关键字极其相关代码。
以下将参考附图对本发明的其它特征和优点以及本发明各种实施例的结构和操作进行详细说明。在附图中,相同的参考标号代表了相同或功能类似的单元。
现在将参考附图用例子对本发明的优选实施例进行说明。
图1的框图显示了根据本发明的可扩展宏语言的各个组成部分;
图2显示了一个含有迭代因子宏的宏表达式的例子。
本发明的目的是提供一种能在实时环境下被动态扩展且无需重建和重新编译宏语言的可扩展宏语言。虽然这种可扩展宏语言可能已含有一个预定的宏命令集,但本发明允许用户添加所需的额外的或新的宏命令。图1中的框图100显示了用于提供本发明的可扩展宏语言的系统的各个组成部分。语法分析程序102含有一个用来对一给定表达式进行分析和语法分析的文法或语法104。如图1所示,语法分析程序102接收到一个宏语言表达式106,并根据该宏语言的语法104将此表达式分成多个部分。以下将对本发明一个实施例中所使用的语法进行更加详细的说明。参考图1,语法分析程序102读取表达式106,并且识别出语法中预先定义的、表示一个新宏命令存在的特定标记。在该例中,当语法分析程序102在表达式106中遇到圆括号时,语法分析程序102将把此括号内所包含的关键字(例如,“property(name)”)视为一个新的宏命令。另外,语法分析程序102根据语法104而识别出括号内所包含的“name”是此新宏命令的一个参数。语法104的其它方面可以将任何符号之外的字符串规定解释为是一个文字串。这样,语法分析程序102就在108处将表达式中的各个单元分割成如图所示的多个部分。本发明中的语法分析程序102具有一个新颖的特征,即,该语法分析程序102对标记(即,圆括号)中的实际内容来说是透明的。也就是说,只要有新的宏命令或关键字被包含进一个可识别的标记之内,语法分析程序102就能够将此关键字分成多个部分,而无论此关键字是否已在宏语言中得到预先定义。这样,如图中的108所示,宏表达式106就被根据可扩展宏语言的语法104而划分成多个部分。新的关键字“property”被划分为标记部分108a;括号内的字符串“name”被划分为参数部分108b;字符串“likes”被划分为文字部分108c;而且字符串“pizza”也被划分为文字部分108d。
如图1所示,本发明还含有一个宏管理程序110以及一个含有多个关键字及其相应可执行代码的储存库112。可执行代码可被保存在储存库112中以作为一个对实际代码114执行时的指示字。储存库112含有一个或多个关键字及相关代码,并且可被动态修改,例如,根据宏语言用户的需要添加新的关键字和代码。本发明中的储存库112可以是一个带有关键字及相关代码的简单文件。另外,也可采用一个单独的数据库来作为储存库112。
当宏表达式被语法分析程序102按语法分析而分割成多个单独部分之后,这些部分将被送至宏管理程序110以进行额外处理。对具有关键字“property”108a的标记部分来说,宏管理程序110将对储存库中的关键字“property”进行检查。如果找到,则与关键字“property”相关的代码将被检索和执行。在代码的执行过程中,宏管理程序110将对宏表达式中所找到的并被语法分析为参数的全部参数进行扫描以执行代码。宏管理程序110并不需要知道可能在代码内部执行的任何其它处理。所有需要宏管理程序110识别的就是:“property”是一个要在储存库112中被搜寻的、用于其对应代码的关键字,以及储存库112中待被用任何参数执行的特定相应代码。对应代码一般都在储存库112中被指定作为一个指向实际代码本身114的指示字。
当正确执行储存库中所指定的代码114之后,宏管理程序110将接受被执行代码的一个或多个输出(如果有的话),并将此输出放回至宏表达式的关键字位置中。这样,在图1所示的例子中,与带有参数“name”的“property”相关的代码的输出可能是MARY。因此,图中106处的可扩展宏表达式“{property(name)}likes pizza”的结果就变成图中116处所示的“Mary likes pizza”。
本发明一个新颖的特征在于,与语法分析程序相类似,宏管理程序不需要知道代码中的任何东西或者由该可执行代码所实现的功能的类型。宏管理程序只需引入与关键字相关的可执行代码。在本发明的一个示范实施例中,它允许用户精确地定义出代码应干什么以及关键字将要执行什么命令,从而给用户提供了一种灵活且可扩展的宏语言。
在上述例子中,输出Mary可以通过各种对宏语言透明的方式而获得。例如,可以通过从全球网进行搜索以获取姓名Mary,或者也可通过利用查询语言而从一数据库中获取它,这进一步显示出了本发明所提供的可扩展性。语言语法
现在将对可扩展宏语言的一个实施例中所使用的语法或文法进行详细说明。根据本发明所述的可扩展宏语言含有一个语法(图1中的104),该语法由文字、宏、注释以及运算符/作用域字符组成。文字
本实施例中的语法将圆括号之外的所有文本都当作文字,而且这些文字与键入的完全一样。在圆括号内,双引号中的文本也被作为文字。这种方案允许在宏调用内置入一些文字。以下显示了文字的一些实例:This text would be emitted just like this;(该文本将被象下面这样发出){“So would this text”}宏
宏包括对宏处理程序(macro processor)的指令,诸如编程语言中的过程或函数。根据本发明中所定义的语法,所有的宏都被包含在圆括号之内。在一个实施例中,宏被分为两类:过程宏和迭代因子宏。
过程宏被设计用来执行一些工作。它们可扩充成一个数值;它们可说明一个变量;它们可调用一个过程。其执行的操作由宏的设计者整体指定。但是,在一个实施例中,当成功完成任务之后,宏必须返回一个“真”值,在任务失败时,宏必须返回一个“错误”值。
以下的表达式中显示了一串文字,其后跟随有一个用于在打印时获取一个页号的宏调用:
My Model Report-Page{HeaderPage}  :输入
My Model Report-Page 1            :输出
在上述例子中,HeaderPage(首页)是一个由用户定义的用于提取一个页号的宏。
迭代因子宏允许用户启遍历(traverse across)数据结构。迭代因子由关键字“begin”和“end”区分,它们用于界定跟随在迭代因子说明之后的代码块。“begin/end”块内的代码每次迭代被执行一次。当迭代因子已遍历其库(poo1)中所有的对象时,控制将断开迭代块并且继续执行迭代块之后的宏表达式中的语句。
下列宏表达式块显示了迭代因子宏的一个应用:
{

    MyIterator

  begin

     DoSomething

  end

  }
在上述例子中,过程宏“DoSomething”对每个由“MyIterator”宏返回的单元执行一次。包围整个段落的圆括号说明了应将该括号内的所有表达式都当作宏代码来处理。参数
本发明所述可扩展宏语言中定义的语法允许过程和迭代因子都可接受和处理参数。参数可包括字符串或其它宏。为了区分参数,参数被包含于跟随在宏之后的括号内。宏可以接受所需的可变长度参数列表。下面显示了一个含有参数“foo”的宏表达式:
{Macro With Parameters(“foo”)}控制块
在一些情况下,如果宏表达式的任何部分出现错误,则想要使整个宏表达式都出现错误。下面的例子就显示出了这样一种情况:
{FirstName[MiddleInitial“.”]LastName}
如果没有middle initial(中间首字母),则MiddleInitial宏将返回一个空值或一个错误值。在这种情况下,文字“.”就不应被打印出来。为了适应这种情况,本发明的语法中包括了一对方括号(“[]”),它们代表一个条件表达式。因此,如果方括号内的宏失效,则方括号内剩余的表达式部分都不会被显示出。在上述例子中,如果MiddleInitial因为缺少数值而失效,则文字“.”将不被打印出来。
条件块具有内部范围,即,条件块的故障不会影响到周边的代码。为了使块中的条件影响到外部的块,语法还需额外包括一种所谓的传播条件,该条件由尖括号来表示。如果一对尖括号内的任何宏出现错误,则尖括号内的块以及相邻的外部块都会失效。下面的例子显示了带有条件和传播条件的宏表达式:
{Print“”[Print[Fail]]}    :输入
foo foo                     :输出
{Print“”[Print<Fail>]}    :输入
foo                         :输出
在上两个例子中,“Print”宏都输出字“foo”。第一个例子中,方括号内的失效宏被包含在其块中。因此,下一个具有“Print”的外部块会像第一个“Print”一样得到执行,结果就输出了“foo foo”。在第二个例子中,当尖括号内的宏失效时,故障会被传播给下一个具有“Print”的外部块。因此,下一个具有“Print”的外部块就不会被执行。由于打印宏被包含在一对方括号内,故障就只限于该块之内。这样,第一个“Print”宏就得到执行,结果输出了“foo”。
图2显示了根据本发明所述含有一个迭代因子宏的宏表达式的一个例子。如参考图1所述的那样,关键字“ForEach”被语法分析程序102(图1)识别为一个宏,而字“Employee”则被识别为是宏“ForEach”的一个参数。当宏管理程序接收到标记关键字“ForEach”时,宏管理程序110(图1)将在注册表112中搜索此关键字“ForEach”,并且执行相应的代码。“ForEach”宏的代码可包括(例如)在具有指定参数“employee”类型的给定对象204的全部子对象204b、204c的宏表达式的begin/end块内执行命令以进行搜索的指令。在该宏表达式202中,还有另一个宏存在于begin/end块之内。因此,宏管理程序110(图1)在注册表112内执行对关键字“Property”的搜索,并且为具有“ForEach”关键字所指定的employee类型的各个子对象204b、204c执行相应的代码搜索。与关键字“Property”相关的代码可以包括(例如)打印在关键字“Property”的参数中所指定的类型数值的指令,在这种情况下,employee的姓名由“EmpName”指定。因此,宏表达式202的结果就是在图中的208处输出“Mary John”。
根据本发明所述的可扩展宏语言在定制宏以具体满足个别用户的需求方面是非常有用的。例如,这种可扩展宏语言已经与UMA模型接合,以用于从UMA模型中根据用户的需求来检索各种对象。UMA在共同待审的美国专利申请No.__(代理人卷号#22074661-25535)中公开,该申请题为“用于建模工具的装置和方法”,于1999年10月15日提交,它被整体引入以作为本发明的参考。附录A中含有对在UMA模型中使用本发明所述可扩展宏语言的简要说明,并被称为UMA模板语言。附录A中的说明只解释了可扩展宏语言的一个实施例,而且附录中的说明不应被看作是对这种可扩展宏语言的范围和能力的限制。
尽管以特定的形式显示了本发明并且对其的说明是根据其实施例来进行的,但是,本领域技术人员应该理解,在不脱离本发明的精神和范围的情况下,可以对其作出上述和其它形式及细节的改变。概览
本文的目的是为UMA中所使用的模板语言提供一个简单的介绍。它假设读者已具有UMA的对象/特性元模型的工作知识。
本文的意图不在于为结构提供详尽的说明。UMA组成员可以提供这种说明,而且他们能够给出许多使用本工具的代码样本。
UMA模板语言(UTL)的目的是为任何基于UMA的应用程序提供描述能力。这些能力可被用于各种特征,包括(但不仅限于此):
·宏扩充:在模型基础上对代码模板的实时扩充。其实例包括:OR-Compass中的触发代码和存储过程,以及SQL-Compass中的VisualBasic和Java组件。
·脚本说明:在模型基础上执行一系列的命令。其一个实例为:OR-Compass中用于Forward Engineering的控制程序代码。
UTL结构的目的是增强其在基于UMA的产品中的使用能力。它是通过允许在剪裁语言以满足用户对产品的特定需求中给用户1提供最大程度的灵活性,同时提供尽可能多的应用支持并展现出允许重复使用新应用代码的机制。
为了实现这些目标,UTL:
1·为语言定义一个最小语法;
2·允许用户编写过程和迭代因子;
3·提供一个机制以用于将过程和迭代因子注册入注册表。语法小结
以下是UTL语法的小结,其目的是为理解应用程序而提供最小程度的需要。更多的信息可在随OR-Compass 1.0一起发布的文档中找到。
模板代码由文字、宏、注释以及一些运算符/作用域字符组成。当前,UTL将所有代码都看作符号串:数字值由它们的串表示来描述;大部分宏都对符号串进行估算。等等2。
1本文中,“用户”指的是UMA应用程序的开发者,而不是应用程序的终端用户。
2预期在今年秋天发布的UTL 1.5也将支持操作的数字模式,而且它可在处理这些数字时提供更好的性能。这会对诸如容量计算的性能带来好处。文字
在模板源代码中,圆括号之外的所有文本都当作文字,而且这些文字与键入的完全一样。在圆括号内,双引号中的文本也被作为文字。前者允许输入大块的样板,例如一个保存过程的主体。后者允许在宏调用中置入文字。例子:
This text would be emitted just like this;(该文本将象这样发出)
{“So would this text”}宏
宏是发给宏处理程序…基本过程的特殊指令。所有的宏都被包含在圆括号之内。宏基本上被分为两类:过程宏和迭代因子宏。
过程宏被设计用来执行一些工作。它们可扩展为一个数值;它们可说明一个变量;它们可调用一个过程。其执行的操作由宏的设计者整体指定。它们所受的唯一限制就是它们必须在成功完成任务之后返回一个“真”值,在任务失败时返回一个“错误”值。
下面显示了一串文字,其后跟随有一个用于在打印时获取一个页号的宏调用:
My Model Report-Page{HeaderPage}
Figure A9981203800141
输入
My Model Report-Page 1          
Figure A9981203800142
输出
迭代因子宏允许用户横遍历数据结构。迭代因子由关键字“begin”和“end”区分,它们用于分界跟随在迭代因子说明之后的代码块。“begin/end”块内的代码每次迭代被执行一次。当迭代因子已遍历其库(pool)中所有的对象时,控制将断开迭代块并且继续执行宏表达式中迭代块之后的第一个语句。
例子—以下为每个由MyIterator宏返回的单元执行一次过程宏DoSomething。包围整个代码段落…的圆括号表明其中的全部代码都应被视为宏代码。
{

    MyIterator

  begin

     DoSomething(进行一些处理)

  end

  }
过程宏和迭代因子宏都可接受参数。参数是符号串或任何被视为符号串的东西,例如:另一个宏。如果一个宏使用了参数,参数将被包含在宏后面的括号中。由于不需要宏的向前声明,所以宏可以接受变量长度参数列表(如果需要的话)。例子:
{Macro With Parameters(“foo”)}控制块
在一些情况下,如果宏表达式的任何部分出现错误,则需要使整个宏表达式都出现错误。一个例子就是一些其后跟随了一个可选数值的样板文本;如果该数值未被提供,则样板将不被显示出来。
方括号中的任何代码都是条件代码:如果其任何一部分出现错误,则整体都会出错。“故障”意味着宏将不能执行而且文字也不会被显示出来。
例子—如果没有中间姓,则.将不会被显示:
{FirstName[MiddleInitial“.”]LastName}
条件块隐藏了它们的内部范围。这意味着条件块的故障不会影响到周边代码。尖括号内的任何代码都是传播条件代码:如果尖括号内的任何部分出现错误,则它将失败并且把故障向外传播给下一个块。
区分这两种类型块的最好办法是用举例说明。在以下两个例子中,打印宏都打出字“foo”,而出故障的宏则都出现了故障。条件块的例子:
{Print“”[Print[fail]]}
Figure A9981203800151
输入
foo foo                 
Figure A9981203800152
输出传播条件块的例子:
{Print“”[Print<fail>]}
Figure A9981203800153
输入
foo                     
Figure A9981203800154
输出结构
LWMDataButler
UTL的所需能力是利用称为数据管理器(butler)的对象来实现的。数据管理器在执行模板代码时负责为宏处理程序遇到的宏提供实现。当宏处理程序被调用时,将会有一个数据管理器接口3提供给它。数据管理器是策略模式(Strategy pattern)4的一个主要应用。
3LWMDataButler.h中定义的接口
4见Gamma,Helm,Johnson Vlissides的设计模式。
这样就完成了语言设计的第一个目标。通过给宏处理程序提供不同的数据管理器,就可将UTL的文法设置成便于完成应用和任务。各个数据管理器工具都能接受一个适于其任务的关键字集(宏),并且拒绝不能接受的关键字。另外,不同的数据管理器可以用不同的方式来使用一给定关键字,从而允许模板代码与应用的基础无关。此举在允许多个基本数据模型不同的产品从同一模板进行工作时非常有用。
LWMDataButler接口具有5个进入点:

  //不带参数的过程宏控制

  virtual LWTBoolean SubstituteValue(

           const LWTString &amp; MacroName,

           LWTString &amp; ExpansionValue)=0;

  //带参数的过程宏控制

  virtual LWTBoolean SubstituteValue(

           const LWTString &amp; MacroName,

           LWMStringList &amp; ParameterList

           LWTString &amp; ExpansionValue)=0;

  //不带参数的迭代因子宏控制

  virtual LWTBoolean StartIteration(

          const LWTString &amp; IterName)=0;

  //带参数的迭代因子宏控制
				
				<dp n="d14"/>
  virtual LWTBoolean StartIteration(

           const LWTString &amp; IterName,

           LWMStringList &amp; ParameterList)=0;

  //迭代因子宏的迭代控制

  virtual LWTBoolean NextIteration(

          const LWTString &amp; IterName)=0;

  MCDataButlerI
UTL的第二个设计目标是向用户提供尽量多的功能,并允许用户出版其自已的代码以供再使用。
由于一个UMA模型的隐喻(metaphor)要在非常抽象的水平上—对象和特性—处理所有的数据,所以模板语言的许多文法单元可被抽象地编写。这些单元可被聚集在一起以形成任何基于UMA产品的语言的主体。用户可以在一些产品指定的区域中扩充这个基础。理想情况下,语言应该不仅对用户是可扩展的,而且对用户产品的终端用户来说也应是可扩展的。这一点可通过我们的解决方案来完成。
该解决方案需解决以下两个基本问题:
1·需要有一种机制来共享工具。随着新关键字的添加,它们必须被公开出来。
2·需要有一种机制来控制宏执行的文字说明。此处我们指的是UMA模型在运行时的状态,还有宏所影响的特定对象或特性。
为了满足这些标准,在UMA中存在有一个数据bulter的基本工具。这种工具(MCDataButlerI)提供了机制以用于递增地定义所需的文法,并且用于管理UMA模型中的文字信息。
这种工具是LWMDataButler接口的一个超集。尽管LWMDataButler接口已被公开,但用户在使用一数据管理器时无需考虑它。LWMDataButler中的工具完成了在LWMDataButler接口的使用中所必需的全部工作。
首先,LWMDataButler管理着宏管理程序的注册表。宏管理程序是这样一个对象,它能够知道如何执行一个被赋予文字说明的特定动作。从概念上讲,宏管理程序是命令模式(Command pattern)6的一个例子。数据管理器保持有宏管理程序的一个字典(它以宏名称为关键字)。当宏处理程序请求数据管理器来处理一个宏(例如,通过SubstituteValue())时,数据管理器将在其字典内找到适当的宏管理程序并且致力于控制该程序。宏管理程序对请求进行处理并将控制返回至数据管理器,而数据管理器则简单地将返回值(如果有的话)和成功状态转发给宏处理程序。
宏管理程序公开了一个接口以供数据管理器调用:
virtual LWTBoolean Exexute(

           MCDataButlerI * Butler

           const LWTString &amp; MacroName,

           LWMStringList * Parameters

           LWTString * ExpansionValue)=0;
  MCDataButlerI为注册一个新的管理程序公开了一个实现代码
(implementation signature):

  void AddHandler(

         const LWTString &amp; Macro

         MCMacroHandlerBase * Handler);
5在MCDataButlerInterface.h中找到的实现
6Op cit.设计模式。
为了实现一个文法,用户可以制作一个MCDataButlerI的工具并使用全部所需的宏管理程序。另外,由于宏管理程序注册表是数据管理器的一个成员变量,而不是一个单纯量,所以用户能够对已有的数据管理器分为子类。此举为用户提供了对于子类所知道的所有宏再加上他们已经开发出来的那些。它的一个例子就是OR-Compass ForwardEngineering数据管理器,它分成子类MCDataButler。后者使用了大量的初始宏以用于创建对象、读取特性、进行迭代、构筑变量、等等。Forward Engineering数据管理器使用仅与Forward Engineering相关联的一个或两个宏(如,一个用于确定数据库命令的正确执行的宏),并且用一个完成文法结束以用于发出DDL。
第二,MCDataButlerI还能管理一个文字堆栈。该文字堆栈允许宏管理程序获知宏运行时以UMA模型中什么样的对象为参考。例如,Property()宏在一个对象中检索被命名的特性。用于Property()的宏管理程序需要知道应该询问哪个对象。
MCDataButlerI保持了一个对象参考的堆栈并且公开了一个接口以用于在该堆栈中推入或弹出对象并且用于询问堆栈。宏管理程序哪个询问这个接口以找出它们操作的文字说明。
MCobject * GetCurrentContext(void);
void PopCurrentContext(void);
void PushCurrentContext(MCObject * Object);
另外,MCDataButlerI公开了一个工具,它允许MCObject迭代因子来自动管理上下文。用于迭代因子宏的宏管理程序能够通过具体举例来说明迭代因子代理。这是一个能够自动保持用于迭代因子的文字堆栈的对象。每个顺序迭代都会造成弹出和推入发生。当再没有项目要往返移动时,堆栈将被弹出,并且保持与迭代因子相遇时出现的状态。这些迭代因子代理被保持在其自身的堆栈内以用于管理成堆的迭代因子。
例子—以下的样本代码显示了Property宏是如何根据文字说明而表现出不同的特性。假设一个名为“MyTable1”的项目具有一个属性“MyColumn1”以及一第二属性“MyColumn2”。假设名为“MyTable2”的第二项具有一个属性“MyColumn3”。在此模板代码执行时,我们预先假设由于其它一些代码的存在而使模型位于堆栈的顶部。
    {                                             <paragraph id="d114">

		<image width="14" height="8" src="A9981203800201.gif"/>

</paragraph>输入

    ForEach(“UOEntities”)

  begin

    Property(“UPName”)

    ForEach(“UPAttributes”)

    begin

     Property(“UPName”)

    end

  end

  }

  MyTable1 MyColumn1 MyColumn2 MyTable2 MyColumn3<paragraph id="d115">

		<image width="14" height="8" src="A9981203800202.gif"/>

</paragraph>输出

Claims (5)

1.一种用于提供可扩展宏语言的方法,包括:
对宏语言表达式进行分析;
根据预定的宏语言语法,在被分析的宏语言表达式中确定一个或多个关键字,该关键字代表先前未在宏语言中定义的宏命令;
从关键字注册表中检索与关键字相关联的代码;以及
执行与上述关键字相关联的代码。
2.如权利要求1所述的用于提供可扩展宏语言的方法,还包括:
通过插入一个新的关键字以及与此新关键字相关的代码,来扩充关键字的注册表。
3.一种用于提供可扩展宏语言的系统,其特征在于包括:
具有预定语法的语法分析程序,用于确定一个或多个置入宏语言表达式中的扩充关键字,扩充的关键字代表未在预定宏语言的宏命令集中定义的宏命令;
具有一个或多个关键字及相关代码的关键字注册表;以及
与语法分析程序相连的宏管理程序,用于从语法分析程序接收扩充的关键字,该宏管理程序响应接收到的扩充关键字,从关键字注册表中检索出一个与接收到的关键字相关的代码,并且执行代码以运行由此扩充代码所代表的宏命令。
4.如权利要求3所述的可扩展宏语言,其特征在于上述关键字注册表可以添加新的关键字及其相关代码。
5.一种用于对宏语言表达式进行语法分析的方法,包括:
对宏语言表达式进行语法分析;以及
根据预定的宏语言语法,在被分析的宏语言表达式中确定一个或多个关键字,所述关键字代表未在宏语言的预定宏命令集中定义的宏命令。
CN99812038A 1998-10-16 1999-10-15 用于可扩展宏语言的方法和系统 Pending CN1361891A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10468298P 1998-10-16 1998-10-16
US60/104,682 1998-10-16

Publications (1)

Publication Number Publication Date
CN1361891A true CN1361891A (zh) 2002-07-31

Family

ID=22301805

Family Applications (5)

Application Number Title Priority Date Filing Date
CN99812225A Expired - Fee Related CN1129068C (zh) 1998-10-16 1999-10-15 模型效果分析方法
CN99812224A Pending CN1359489A (zh) 1998-10-16 1999-10-15 用于构筑建模工具的装置和方法
CN99812190A Expired - Fee Related CN1129859C (zh) 1998-10-16 1999-10-15 确定两个或多个模型之间的区别的方法
CN99812038A Pending CN1361891A (zh) 1998-10-16 1999-10-15 用于可扩展宏语言的方法和系统
CNB998121916A Expired - Fee Related CN1192321C (zh) 1998-10-16 1999-10-15 通过结构化查询语言输入提供对分层数据存储器的访问的方法和装置

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN99812225A Expired - Fee Related CN1129068C (zh) 1998-10-16 1999-10-15 模型效果分析方法
CN99812224A Pending CN1359489A (zh) 1998-10-16 1999-10-15 用于构筑建模工具的装置和方法
CN99812190A Expired - Fee Related CN1129859C (zh) 1998-10-16 1999-10-15 确定两个或多个模型之间的区别的方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CNB998121916A Expired - Fee Related CN1192321C (zh) 1998-10-16 1999-10-15 通过结构化查询语言输入提供对分层数据存储器的访问的方法和装置

Country Status (13)

Country Link
US (3) US6601023B1 (zh)
EP (5) EP1121640B1 (zh)
JP (6) JP2002528794A (zh)
KR (5) KR20010089309A (zh)
CN (5) CN1129068C (zh)
AT (1) ATE333125T1 (zh)
AU (5) AU1207100A (zh)
BR (5) BR9914549A (zh)
CA (5) CA2347495A1 (zh)
DE (1) DE69932344T2 (zh)
HK (4) HK1040440A1 (zh)
IL (10) IL142482A0 (zh)
WO (5) WO2000023917A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1910576B (zh) * 2003-10-22 2010-11-03 英特尔公司 用于结构化数据转换的设备
CN103210369A (zh) * 2010-06-30 2013-07-17 热电科学仪器有限责任公司 用于分析测量的智能多功能宏语言

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1207100A (en) * 1998-10-16 2000-05-08 Computer Associates Think, Inc. Apparatus and method for building modeling tools
US7734457B2 (en) * 1999-10-16 2010-06-08 Computer Associates Think, Inc. Method and system for generating dynamic comparison models
US7194405B2 (en) * 2000-04-12 2007-03-20 Activepoint Ltd. Method for presenting a natural language comparison of items
US6480970B1 (en) * 2000-05-17 2002-11-12 Lsi Logic Corporation Method of verifying data consistency between local and remote mirrored data storage systems
US6853997B2 (en) * 2000-06-29 2005-02-08 Infoglide Corporation System and method for sharing, mapping, transforming data between relational and hierarchical databases
US7089256B2 (en) * 2000-07-11 2006-08-08 Knowledge Dynamics, Inc. Universal data editor
US7421587B2 (en) * 2001-07-26 2008-09-02 Mcafee, Inc. Detecting computer programs within packed computer files
US7069547B2 (en) 2001-10-30 2006-06-27 International Business Machines Corporation Method, system, and program for utilizing impact analysis metadata of program statements in a development environment
US7194475B2 (en) 2001-10-30 2007-03-20 International Business Machines Corporation Method, system, and program for performing an impact analysis of program statements in at least one source code file
US7069263B1 (en) * 2002-02-19 2006-06-27 Oracle International Corporation Automatic trend analysis data capture
CH703081B1 (de) * 2003-03-19 2011-11-15 Roland Pulfer Analyse eines Modells eines komplexen Systems.
CH703073B1 (de) * 2003-03-19 2011-11-15 Roland Pulfer Vergleich von Modellen eines komplexen Systems.
CH698890B1 (de) * 2003-03-19 2009-11-30 Roland Pulfer Modellierung eines komplexen Systems.
CA2429335A1 (en) * 2003-05-22 2004-11-22 Cognos Incorporated System and method of determining impact of reports based on metadata model changes
EP1652074A4 (en) * 2003-07-11 2008-08-13 Computer Ass Think Inc ADJUNCTION TO A TOOL FOR MODELING OBJECTS DEFINED BY A USER
KR100611098B1 (ko) * 2003-12-12 2006-08-09 한국전자통신연구원 인터페이스 표준 모델을 이용한 위성 시뮬레이션 모델링시스템
US8793602B2 (en) * 2004-01-15 2014-07-29 The Mathworks, Inc. System and method for scheduling the execution of model components using model events
US7484212B2 (en) * 2004-02-27 2009-01-27 International Business Machines Corporation Methods and arrangements for automated change plan construction and impact analysis
US7555531B2 (en) * 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20060074980A1 (en) * 2004-09-29 2006-04-06 Sarkar Pte. Ltd. System for semantically disambiguating text information
GB2419700B (en) * 2004-10-29 2010-03-31 Hewlett Packard Development Co Methods for indexing data, systems, software and apparatus relng thereto
US20060168577A1 (en) * 2005-01-21 2006-07-27 Melo Antonio A V Software development system and method
EP1684170A3 (en) * 2005-01-21 2007-01-24 Outsystems, software em redes, S. A. Software development system and method
US20060168555A1 (en) * 2005-01-21 2006-07-27 Represas Ferrao Lucio E Software development system and method
US7735062B2 (en) 2005-01-21 2010-06-08 Outsystems—Software Em Rede, S.A. Software development system and method
JP4755427B2 (ja) 2005-02-23 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース・アクセス・システム、データベース・アクセス方法
US20060259781A1 (en) * 2005-04-29 2006-11-16 Sony Corporation/Sony Electronics Inc. Method and apparatus for detecting the falsification of metadata
US20070006130A1 (en) * 2005-06-02 2007-01-04 Arnold Stamler Model oriented method of automatically detecting alterations in the design of a software system
CN100432999C (zh) * 2005-06-06 2008-11-12 上海宝信软件股份有限公司 Oracle下利用表结构体对整记录进行数据存取的方法
US20070250927A1 (en) * 2006-04-21 2007-10-25 Wintutis, Inc. Application protection
US9626161B2 (en) * 2006-12-12 2017-04-18 Ca, Inc. Computer readable medium and methods for filtering a dynamic comparison model
US8156147B1 (en) 2007-02-06 2012-04-10 The Mathworks, Inc. Sharing of instructions across model boundaries
US8334995B2 (en) * 2007-09-19 2012-12-18 Sharp Laboratories Of America, Inc. Method and system for adaptive control of imaging node
US20090094616A1 (en) * 2007-10-04 2009-04-09 Delima Roberto Comparing Middleware Configurations
US20090138846A1 (en) * 2007-11-23 2009-05-28 Microsoft Corporation Extended macro recording
US7962457B2 (en) * 2008-02-12 2011-06-14 Computer Associates Think, Inc. System and method for conflict resolution
US8321407B2 (en) * 2008-02-24 2012-11-27 Panaya Ltd. Methods for calculating a combined impact analysis repository
US8170988B2 (en) * 2008-04-17 2012-05-01 The Boeing Company System and method for synchronizing databases
KR100956921B1 (ko) * 2008-04-28 2010-05-11 권순용 데이터베이스 액세스 방법
US20100088686A1 (en) * 2008-10-06 2010-04-08 Microsoft Corporation Programming language with extensible syntax
CN101587492B (zh) * 2009-05-11 2011-05-11 金蝶软件(中国)有限公司 定位处理对象的方法和系统
KR100921255B1 (ko) * 2009-05-14 2009-10-13 주식회사 신시웨이 Sql 마스킹 장치 및 방법
US20110313736A1 (en) * 2010-06-18 2011-12-22 Bioproduction Group, a California Corporation Method and Algorithm for Modeling and Simulating A Discrete-Event Dynamic System
US8706744B2 (en) * 2011-05-31 2014-04-22 Ca, Inc. Determining dependencies during macro expansion
US20130139113A1 (en) * 2011-11-30 2013-05-30 Microsoft Corporation Quick action for performing frequent tasks on a mobile device
US8990187B2 (en) 2012-05-21 2015-03-24 Google Inc. Efficient top-down hierarchical join on a hierarchically clustered data stream
KR102270791B1 (ko) 2014-12-10 2021-06-29 삼성전자주식회사 매크로 명령어를 처리하는 방법 및 장치
EP3251029A1 (en) * 2015-03-31 2017-12-06 Huawei Technologies Co. Ltd. Analysis engine and method for analyzing pre-generated data reports
US10585648B2 (en) 2016-06-01 2020-03-10 The Mathworks, Inc. Systems and methods for aggregating implicit and explicit event code of executable models
KR102195838B1 (ko) 2019-04-10 2020-12-28 주식회사 티맥스 소프트 데이터 베이스 관리 방법
US11769489B2 (en) 2021-01-28 2023-09-26 Samsung Electronics Co., Ltd. Electronic device and method for performing shortcut command in electronic device

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3656178A (en) * 1969-09-15 1972-04-11 Research Corp Data compression and decompression system
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
US4787035A (en) * 1985-10-17 1988-11-22 Westinghouse Electric Corp. Meta-interpreter
JPS63181033A (ja) * 1987-01-23 1988-07-26 Hitachi Ltd プログラム自動生成方式
US5070534A (en) * 1988-10-17 1991-12-03 International Business Machines Corporation Simplified cad parametric macroinstruction capability including variational geometrics feature
US4931928A (en) * 1988-11-09 1990-06-05 Greenfeld Norton R Apparatus for analyzing source code
GB2227339A (en) * 1989-01-21 1990-07-25 Kashinath Narayan Dandeker Complex expression generator
JPH0363581A (ja) 1989-04-28 1991-03-19 Internatl Business Mach Corp <Ibm> 電子回路の試験方法
US5276880A (en) * 1989-12-15 1994-01-04 Siemens Corporate Research, Inc. Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses
US5257363A (en) * 1990-04-09 1993-10-26 Meta Software Corporation Computer-aided generation of programs modelling complex systems using colored petri nets
US5699310A (en) * 1990-06-29 1997-12-16 Dynasty Technologies, Inc. Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications
FR2667711B1 (fr) * 1990-10-09 1992-11-27 Thomson Csf Procede de reconnaissance d'objets dans des images et son application au suivi d'objets dans des sequences d'images.
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
US5596746A (en) 1991-10-21 1997-01-21 General Electric Company Method for transforming relational data base schemas into object models using ideal table meta models
US5421016A (en) 1991-12-12 1995-05-30 International Business Machines Corporation System and method for dynamically invoking object methods from an application designed for static method invocation
FR2688611A1 (fr) * 1992-03-12 1993-09-17 Bull Sa Utilisation d'un langage dont le typage porte sur le contenu des variables et permettant de manipuler des constructions complexes.
US5664181A (en) * 1992-03-17 1997-09-02 International Business Machines Corporation Computer program product and program storage device for a data transmission dictionary for encoding, storing, and retrieving hierarchical data processing information for a computer system
US5517641A (en) 1992-05-27 1996-05-14 Cdb Software, Inc. Restartable method to reorganize DB2 tablespace records by determining new physical positions for the records prior to moving using a non sorting technic
FR2694105B1 (fr) 1992-07-22 1994-11-25 Bull Sa Utilisation d'un langage à interprète embarqué pour la réalisation d'un outil interactif de définition d'interface utilisateurs.
US5295059A (en) * 1992-09-09 1994-03-15 Allen-Bradley Company, Inc. Programmable controller with ladder diagram macro instructions
US5794229A (en) * 1993-04-16 1998-08-11 Sybase, Inc. Database system with methodology for storing a database table by vertically partitioning all columns of the table
JPH06332710A (ja) * 1993-05-21 1994-12-02 Fujitsu Ltd オブジェクト指向データ処理システム
US5550971A (en) 1993-06-30 1996-08-27 U S West Technologies, Inc. Method and system for generating a user interface adaptable to various database management systems
JPH07244605A (ja) * 1994-03-03 1995-09-19 Fujitsu Ltd データベースシステム及びその更新方法
US5724425A (en) * 1994-06-10 1998-03-03 Sun Microsystems, Inc. Method and apparatus for enhancing software security and distributing software
US5742828A (en) * 1994-08-03 1998-04-21 Microsoft Corporation Compiler and method for evaluation of foreign syntax expressions in source code
US5694539A (en) * 1994-08-10 1997-12-02 Intrinsa Corporation Computer process resource modelling method and apparatus
US5495613A (en) * 1994-08-18 1996-02-27 Unisys Corporation Method and apparatus for extending the capability of a system editor using high-level language transforms
US5692195A (en) 1994-08-31 1997-11-25 International Business Machines Corporation Parent class shadowing
US5768564A (en) * 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
US5732192A (en) * 1994-11-30 1998-03-24 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Global qualitative flow-path modeling for local state determination in simulation and analysis
US5721915A (en) 1994-12-30 1998-02-24 International Business Machines Corporation Interaction between application of a log and maintenance of a table that maps record identifiers during online reorganization of a database
US5768586A (en) * 1995-01-10 1998-06-16 Peoplesoft, Inc. Net change management for object-oriented modeling
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US5644764A (en) * 1995-01-31 1997-07-01 Unisys Corporation Method for supporting object modeling in a repository
US5548754A (en) 1995-02-07 1996-08-20 International Business Machines Corporation Optimization of SQL queries using early-out join transformations
US5701487A (en) * 1995-03-27 1997-12-23 Sun Microsystems, Inc. Method and apparatus for displaying locations of errors detected inside software macro calls
WO1996034350A1 (en) 1995-04-24 1996-10-31 Aspect Development, Inc. Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5717924A (en) * 1995-07-07 1998-02-10 Wall Data Incorporated Method and apparatus for modifying existing relational database schemas to reflect changes made in a corresponding object model
US5790861A (en) * 1995-07-07 1998-08-04 Sun Microsystems, Inc. Method and apparatus for generating executable code from object-oriented C++ source code
US5638381A (en) * 1995-07-21 1997-06-10 Motorola, Inc. Apparatus and method for deriving correspondence between storage elements of a first circuit model and storage elements of a second circuit model
WO1997008634A1 (en) 1995-08-23 1997-03-06 International Business Machines Corporation Method and computer system for generating process management computer programs for process models
US5721929A (en) * 1995-10-06 1998-02-24 Electronic Data Systems Corporation Method for extending a fourth generation programming language
US5855014A (en) * 1995-11-03 1998-12-29 Application Partners, Inc. Getfield function for a relational workgroup platform using keyword and workflow databases
US6003037A (en) 1995-11-14 1999-12-14 Progress Software Corporation Smart objects for development of object oriented software
US5721925A (en) * 1995-12-01 1998-02-24 Unisys Corporation Method for generically invoking operation in an object oriented repository
US5802511A (en) * 1996-01-02 1998-09-01 Timeline, Inc. Data retrieval method and apparatus with multiple source capability
US5815415A (en) * 1996-01-19 1998-09-29 Bentley Systems, Incorporated Computer system for portable persistent modeling
US6091895A (en) 1996-03-27 2000-07-18 International Business Machines Corporation Object oriented central maintenance for programs and scripts
US5715453A (en) * 1996-05-31 1998-02-03 International Business Machines Corporation Web server mechanism for processing function calls for dynamic data queries in a web page
US5987123A (en) * 1996-07-03 1999-11-16 Sun Microsystems, Incorporated Secure file system
US5819305A (en) * 1996-08-23 1998-10-06 Motorola, Inc. Method and apparatus for configuring operating modes in a memory
US5974201A (en) * 1996-10-01 1999-10-26 Siemens Corporate Research, Inc. Smart image system
US6112024A (en) 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US5761494A (en) 1996-10-11 1998-06-02 The Sabre Group, Inc. Structured query language to IMS transaction mapper
US6065002A (en) 1996-10-31 2000-05-16 Systems And Computer Technology Corporation Simplified interface for relational database access using open database connectivity
US5983016A (en) 1996-11-12 1999-11-09 International Business Machines Corporation Execution engine in an object modeling tool
US5857197A (en) 1997-03-20 1999-01-05 Thought Inc. System and method for accessing data stores as objects
US5905982A (en) 1997-04-04 1999-05-18 International Business Machines Corporation Handling null values in SQL queries over object-oriented data
US6182274B1 (en) * 1997-05-01 2001-01-30 International Business Machines Corporation Reusing code in object-oriented program development
US5978789A (en) * 1997-05-07 1999-11-02 Lucent Technologies Inc. Efficient hypothetical query evaluation in a database system
US5878411A (en) 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5822750A (en) * 1997-06-30 1998-10-13 International Business Machines Corporation Optimization of correlated SQL queries in a relational database management system
US6513152B1 (en) 1997-07-23 2003-01-28 International Business Machines Corporation Object oriented framework mechanism for customization of object oriented frameworks
US6081774A (en) * 1997-08-22 2000-06-27 Novell, Inc. Natural language information retrieval system and method
US6112304A (en) 1997-08-27 2000-08-29 Zipsoft, Inc. Distributed computing architecture
US6292811B1 (en) * 1997-09-19 2001-09-18 Modernsoft, Inc. Populating cells of an electronic financial statement
US5974407A (en) 1997-09-29 1999-10-26 Sacks; Jerome E. Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus
US6085120A (en) * 1997-11-17 2000-07-04 International Business Machines Corporation Data system processing and method for creating application extension
US6105043A (en) * 1997-12-16 2000-08-15 International Business Machines Corporation Creating macro language files for executing structured query language (SQL) queries in a relational database via a network
US6247020B1 (en) 1997-12-17 2001-06-12 Borland Software Corporation Development system with application browser user interface
US6374256B1 (en) 1997-12-22 2002-04-16 Sun Microsystems, Inc. Method and apparatus for creating indexes in a relational database corresponding to classes in an object-oriented application
US6243709B1 (en) 1998-06-29 2001-06-05 Sun Microsystems, Inc. Method and apparatus for loading stored procedures in a database corresponding to object-oriented data dependencies
US6114978A (en) 1998-01-14 2000-09-05 Lucent Technologies Inc. Method and apparatus for assignment of shortcut key combinations in a computer software application
US6453356B1 (en) 1998-04-15 2002-09-17 Adc Telecommunications, Inc. Data exchange system and method
US6052720A (en) 1998-05-14 2000-04-18 Sun Microsystems, Inc. Generic schema for storing configuration information on a server computer
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
US6226792B1 (en) 1998-10-14 2001-05-01 Unisys Corporation Object management system supporting the use of application domain knowledge mapped to technology domain knowledge
AU1207100A (en) 1998-10-16 2000-05-08 Computer Associates Think, Inc. Apparatus and method for building modeling tools
US6859919B1 (en) 1998-10-16 2005-02-22 Computer Associates Think, Inc. Object modeling tool with meta model semantic registry (rules) a meta data manager for object(s) properties an object/property interface for instance(s) of objects/properties received via object/property interface of the object factory registry
US6502234B1 (en) 1999-01-15 2002-12-31 International Business Machines Corporation Component based wizard for creating wizards
US6678882B1 (en) 1999-06-30 2004-01-13 Qwest Communications International Inc. Collaborative model for software systems with synchronization submodel with merge feature, automatic conflict resolution and isolation of potential changes for reuse
KR200258626Y1 (ko) 1999-06-30 2001-12-28 윤청목 쥬스추출기와 겸용 사용되게 한 믹서
US6385767B1 (en) 1999-09-30 2002-05-07 Unisys Corporation Method and system for creating and manipulating extensions to version control systems
ATE325389T1 (de) 1999-10-01 2006-06-15 Infoglide Corp System und verfahren zum umwandlen einer relationalen datenbank in eine hierarchische datenbank
US7734457B2 (en) 1999-10-16 2010-06-08 Computer Associates Think, Inc. Method and system for generating dynamic comparison models
JP2001265361A (ja) 2000-03-14 2001-09-28 Sony Corp 情報提供装置および方法、情報処理装置および方法、並びにプログラム格納媒体
US7353289B2 (en) 2000-11-06 2008-04-01 Telecommunication Systems, Inc. System for an open architecture development platform with centralized synchronization
US6754671B2 (en) 2001-05-02 2004-06-22 Sun Microsystems, Inc. Apparatus for Meta Object Facility repository bootstrap
US20030014439A1 (en) 2001-06-20 2003-01-16 International Business Machines Corporation Defining a markup language representation for state chart data
US7322025B2 (en) 2001-07-17 2008-01-22 Tata Consultancy Services Limited Method and apparatus for versioning and configuration management of object models
US6904588B2 (en) 2001-07-26 2005-06-07 Tat Consultancy Services Limited Pattern-based comparison and merging of model versions
EP1652074A4 (en) 2003-07-11 2008-08-13 Computer Ass Think Inc ADJUNCTION TO A TOOL FOR MODELING OBJECTS DEFINED BY A USER

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1910576B (zh) * 2003-10-22 2010-11-03 英特尔公司 用于结构化数据转换的设备
CN103210369A (zh) * 2010-06-30 2013-07-17 热电科学仪器有限责任公司 用于分析测量的智能多功能宏语言

Also Published As

Publication number Publication date
AU772191B2 (en) 2004-04-08
WO2000023919A1 (en) 2000-04-27
IL142571A0 (en) 2002-03-10
EP1121640A1 (en) 2001-08-08
CN1129859C (zh) 2003-12-03
CN1323424A (zh) 2001-11-21
CA2346928A1 (en) 2000-04-27
WO2000023882A1 (en) 2000-04-27
ATE333125T1 (de) 2006-08-15
KR20010103603A (ko) 2001-11-23
DE69932344T2 (de) 2007-07-05
CN1323416A (zh) 2001-11-21
IL142482A (en) 2006-08-20
IL142482A0 (en) 2002-03-10
WO2000023863A3 (en) 2000-11-23
AU1445200A (en) 2000-05-08
BR9914549A (pt) 2002-01-15
HK1040552A1 (zh) 2002-06-14
CN1325514A (zh) 2001-12-05
CA2346924A1 (en) 2000-04-27
EP1129391A2 (en) 2001-09-05
CN1192321C (zh) 2005-03-09
WO2000023919A9 (en) 2000-11-16
HK1040441A1 (zh) 2002-06-07
US6601023B1 (en) 2003-07-29
AU1207100A (en) 2000-05-08
EP1121655A4 (en) 2003-02-05
EP1121639A1 (en) 2001-08-08
CN1129068C (zh) 2003-11-26
JP2002528789A (ja) 2002-09-03
EP1121640B1 (en) 2016-07-27
AU775431B2 (en) 2004-07-29
IL142564A0 (en) 2002-03-10
KR20010103604A (ko) 2001-11-23
WO2000023917A1 (en) 2000-04-27
HK1040440A1 (zh) 2002-06-07
IL142572A (en) 2007-06-03
EP1121654A4 (en) 2003-09-24
BR9914427A (pt) 2001-06-26
BR9914551A (pt) 2002-03-05
HK1042140A1 (zh) 2002-08-02
JP2002528794A (ja) 2002-09-03
IL142484A0 (en) 2002-03-10
JP2002528793A (ja) 2002-09-03
JP2005285141A (ja) 2005-10-13
BR9914553A (pt) 2001-06-26
DE69932344D1 (de) 2006-08-24
US6385610B1 (en) 2002-05-07
EP1121639A4 (en) 2002-09-11
CA2347495A1 (en) 2000-04-27
AU1315400A (en) 2000-05-08
EP1121654A1 (en) 2001-08-08
JP2002528783A (ja) 2002-09-03
KR20010093777A (ko) 2001-10-29
IL142564A (en) 2006-08-01
EP1121655B1 (en) 2006-07-12
BR9914552A (pt) 2001-11-27
IL142572A0 (en) 2002-03-10
CA2347467A1 (en) 2000-04-27
WO2000023917A9 (en) 2000-11-02
WO2000023883A1 (en) 2000-04-27
CN1359489A (zh) 2002-07-17
EP1121639B1 (en) 2016-08-03
AU1315200A (en) 2000-05-08
IL142571A (en) 2007-02-11
IL142484A (en) 2006-10-31
CA2346925A1 (en) 2000-04-27
AU761228B2 (en) 2003-05-29
EP1121640A4 (en) 2002-09-11
KR20010089309A (ko) 2001-09-29
JP2002528788A (ja) 2002-09-03
KR20010106514A (ko) 2001-11-29
AU6518099A (en) 2000-05-08
EP1121655A1 (en) 2001-08-08
EP1129391A4 (en) 2003-03-12
US7711685B1 (en) 2010-05-04
WO2000023863A2 (en) 2000-04-27

Similar Documents

Publication Publication Date Title
CN1361891A (zh) 用于可扩展宏语言的方法和系统
Yaghmazadeh et al. SQLizer: query synthesis from natural language
Kim et al. Query processing in database systems
AU2006264207B2 (en) Code transformation
CN1183447C (zh) 用于发送表构造的方法
US20130227533A1 (en) Code transformation
CN1653448A (zh) 搜索数据源的系统和方法
Eastman System facilities for CAD databases
CN1509433A (zh) 把传统软件应用程序转换为现代面向对象系统的方法和系统
CN1661593A (zh) 一种计算机语言翻译方法及其翻译系统
Yang et al. Powerstation: Automatically detecting and fixing inefficiencies of database-backed web applications in ide
Ackermann et al. Jet: An embedded DSL for high performance big data processing
Chelini et al. Progressive raising in multi-level ir
CN1549178A (zh) 分配和更新杂散资源的方法和系统
US7716656B2 (en) Nullable and late binding
CN1976320A (zh) 数据访问控制方法及系统
CN1949176A (zh) 用于管理试探特性的方法和系统
CN1786969A (zh) 数据生成系统、制图数据生成设备及方法以及承载制图数据的存储介质
EP1444071B1 (en) A robot system and a method and a software product for the robot system
AU2012201466B2 (en) Code Transformation
Cheng Sqlsol: An accurate sql query synthesizer
Lengyel et al. Implementing an OCL Compiler for .NET
Kalnins et al. Metamodel specialization for graphical modeling language support
GB2420638A (en) Method of substituting code fragments in Internal Representation
CN100346304C (zh) 用于排列和解排列XML和Java中的数据类型的系统和方法

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication