CN1214486A - 源代码变换方法和记录媒质 - Google Patents
源代码变换方法和记录媒质 Download PDFInfo
- Publication number
- CN1214486A CN1214486A CN98124345A CN98124345A CN1214486A CN 1214486 A CN1214486 A CN 1214486A CN 98124345 A CN98124345 A CN 98124345A CN 98124345 A CN98124345 A CN 98124345A CN 1214486 A CN1214486 A CN 1214486A
- Authority
- CN
- China
- Prior art keywords
- source code
- counterfoil
- file
- program execution
- program
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种将含有在对象交互中的存根方法的描述的初始源代码变换为对应于程序执行环境的另一源代码的方法。初始源代码是由预定编程语言描述的,含有涉及用于对象交互中的存根方法的信息。变换是参考一个寄存的信息,将源代码按照预定的格式,变换为与普通源代码相同编程语言的源代码。这消除了学习接口定义语言的必要,因而大大方便了利用存根方法形成应用程序。
Description
本发明涉及一种用于将包含关于所谓存根法(stub method)的对象交互方法的描述的源代码变换为适合于程序执行环境的源代码的源代码变换方法。本发明还涉及一种存储有用于执行源代码变换处理的源代码变换程序的计算机可读的记录媒质。本发明的某些特点的细节描述在名称为“数据处理方法和装置”的欧洲专利申请No.0753811A1中,该欧洲专利申请是由同一受让人于1996年7月12日提交的,并对于1997年7月14日在日本提交的JP178625/95要求了公约优先权,因此该申请的完全公开被援引于此,以资参考。
一般来说,面向对象编程经常使用对象交互方法。术语“对象交互”被使用在本说明书中意味着,例如用于从一个对象向另外一个对象发送一个消息的处理。对象交互是一种在面向对象编程中由操作***提供的基本服务。
使用在对象交互中的各种方法一般称之为“存根法”。因此,存根法被用在面向对象编程中,用于从一个对象发送一个消息到另外一个对象的目的。在下面的描述中,从其消息被发送的对象将被称之为“客户对象”,而接收该消息的对象将被称之为“服务器对象”。
例如,当希望执行从通过网络链接到另外的计算机的服务器对象的程序时,通过网络从客户对象发送一个消息到在另外的计算机上的将被执行的服务器对象。因此,可能执行在通过网络链接的另外计算机上的服务器对象的程序。应当理解为,对于通过网络调用一个被在不同计算机上执行的程序的遥控操作可以与由本地程序调用接口执行的相同的方法来执行。
一般来说,存根发生器被用于产生一种存根方法。更为具体地讲,这样的存根发生器读出含有涉及描述在某种编程语言的存根方法的信息的源代码,并从读出的源代码中产生一种存根方法。在大多数情况下,存根发生器具有两种功能,即产生涉及消息发送者的客户对象的存根方法的功能和产生涉及消息接收者的服务器对象的存根方法的功能。利用这些功能,客户对象和服务器对象可以以高度灵活的方式被很容易地建立起来。
下面将对利用存根发生器形成一个程序的处理进行描述。
利用存根发生器的程序的形成包括借助于C++编程语言非对象交互部分程序的描述和利用接口定义语言对对象交互部分程序的描述。“接口定义语言”是一种定义各个对象之间通信接口的语言。接口定义语言可以是,例如,由CORBA(Common Object Request Broker Architecture)确定的语言,该语言是用于实现面向对象分布处理环境的一种规则。
更具体地讲,参照图4,对于对象交互形成一个应用程序的处理开始于三种源代码的形成,这些源代码叫做“第一”、“第二”、和“第三”源代码。
第一源代码含有按接口定义语言描述的存根方法信息。这意味着将被用于对象交互的接口是由第一源代码定义的。在图4中,其中该第一源代码被写入的文件f1是由“Test.idl”表示的。
第二源代码含有按诸如C++之类的编程语言描述的服务器对象信息。因此,第二源代码含有非按第一源代码描述的对象交互信息的服务器对象信息的部分。该第二源代码还含有,例如从利用第一源代码描述的存根方法调用用于产生基于所接收的消息进行处理的线程(thread)方法的程序。在图4中,描述第二源代码的文件由“Test svc_proc.cc”表示。
第三源代码含有按诸如C++之类的编程语言描述的客户对象信息。应当注意,第三源代码包括非按第一源代码描述的对象交互信息的客户对象信息部分。因此,第三源代码含有以应用程序的形式用于实施一个主功能的,例如到一个适合的服务的连接的描述。在图4中,其中第三源代码被描述的文件f3由“Test.cc”和“Test.h”表示。“Test.h”文件是一个组合在“Test.cc”文件中的包含文件。
按接口定义语言描述的第一源代码由存根发生器101变换为利用与第二和第三源代码的描述所使用的相同编程语言描述的源代码。因此,存根发生器101产生一种由诸如C++之类的编程语言所描述的而不是由接口定义语言描述的存根方法。
更具体地讲,由存根发生器101执行的变换从描述第一源代码的文件f1产生含有对服务器对象的存根方法描述的文件f4,含有对客户对象的存根方法描述的文件f5,和由涉及对象交互的各个对象共同使用的一个包含文件F6。
在图4中,含有服务器对象的存根方法描述的f4由“TestStub.cc”和“TestStub.h”代表。“Teststub.h”文件是一个组合在“TestStub.cc”文件中的包含文件。含有客户对象的存根方法描述的f5由“TestProxy.cc”和“TestProxy.h”代表。“TestProxy.h”文件是一个组合在“TestProxy.cc”文件中的包含文件。由涉及对象交互的各个对象所共同使用的包含文件f6由“TestEntry.cc”和“TestMsg.h”代表。
然后,对含有第二源代码描述的文件f2,含有第三源代码描述的文件f3,和由存根发生器101产生的文件f4到f6的每一个进行编辑,并且将编辑的结果链接起来,因此形成用于服务器对象的服务器对象可执行文件f7和客户对象的可执行文件f8。
因此,在图4所示的处理中,由具有编辑器和链接器的可执行文件产生程序102从包括第二源代码描述的文件f2(Test_svc_proc.cc)、含有用于服务器对象的存根方法描述的文件f4(TestStub.cc,TestStub.h)、和包含文件f6(TestEntry.h,TestMsg.h)的资源中产生服务器对象可执行文件f7。这通常由参与对象交互的对象使用。同时,由具有编辑器和链接器的可执行文件产生程序103从包括第三源代码描述的文件f3(Test.h,Test.cc)、含有对于客户对象的存根方法描述的文件f5(TestProxy.cc,TestProxy.h)、和包含文件F6的资源中产生客户对象可执行文件f8。这通常由参与对象交互的对象使用。
一般,在执行程序中,存在着各种环境。因此,必须形成各种应用程序,以便适合于程序的执行环境。这样自然地要求,程序执行环境也要适合于按照应用程序和需求的特性所产生的存根方法。因此,存根发生器必须产生存根方法,使得该存根方法适合于取决于所产生的存根方法的应用程序的执行环境。
因此,已经有一种常规的实践,即准备不同的存根发生器,它产生用于不同程序执行环境的存根方法。因此,一个具体的存根方法的产生要求按照将要执行使用存根方法的应用程序的环境,选择使用存根发生器。
因此,对于产生存根方法的常规技术利用一种由用于变换按接口定义语言描述的源代码的存根发生器执行的操作。利用这种已知技术会遇到以下问题。
首先,研究和学习接口定义语言是重要的,以便编程者形成使用一种存根方法的应用程序,因为按某种接口定义语言描述的源代码的形成是必要的。一般,诸如C++之类的接口定义语言和编程语言具有基本不同的格式。因此,一个普通编程者,即使熟悉各个编程语言,也必须花费大量时间研究和学习接口定义语言,达到能利用接口定义语言形成源代码的这样一种程度。从而,对于形成一个使用存根方法的应用程序,花费大量的时间和劳动是必须的。
第二个问题涉及按接口定义语言描述的源代码部分构成的接口和对应于按诸如C++之类的编程语言描述的源代码部分的接口之间的确定匹配的困难。这种困难将要详细地描述。由表示在图4的程序中的一种单一的应用程序包含按接口定义语言描述的部分和按诸如C++之类的编程语言描述的部分两者。如前所述,这两种类型的语言使用完全不同的格式。因此,按接口定义语言的描述和按诸如C++之类的编程语言描述的并存使得确认这些描述的接口是否相匹配是非常困难的。
第三个问题是常规的存根发生器不能共同用在多个不同的程序执行环境中。因此,如上所述,必须准备产生适合于不同程序执行环境的不同存根方法的多个存根发生器。
第四,应当指出的是,仅由接口定义语言已经确定的各方法可被用作存根方法。因此,各个用户不能被允许交互地改变存根方法的内容。换言之,在设计存根发生器的程序中确定存根方法,和因此存根方法取决于存根发生器。因此存根方法的内容不能由用户改变。
因此,本发明的一个目的是提供一种源代码变换处理方法,该方法容易地适应各种程序执行环境和该方法可以不利用接口定义语言而产生存根方法。
本发明的另一目的是提供一种存储源代码变换程序的计算机可读记录媒质,该程序执行上述源代码变换处理程序。
为此目的,按照本发明的一个方面,提供一种源代码变换处理方法,包括以下步骤:制备利用预定编程语言描述和包含涉及用于对象交互的方法中的信息的一次源代码,该信息是由一种对于多种程序执行环境所共有的格式描述的;和通过参考对应于该方法所执行的程序执行环境所寄存信息,按对应于该方法将被执行的程序执行环境的预定格式,将该一次源代码变换为利用与一次源代码相同的编程语言描述的二次源代码。
按照本发明的另一方面,提供一种存储着源代码变换程序的计算机可读的记录媒质,该程序执行一种处理包括以下步骤:制备利用预定编程语言描述的和包含涉及用于对象交互的方法中的信息的一次源代码,该信息是由一种对于多种程序执行环境所共有的格式描述的;和通过参考对应于该方法所执行的程序执行环境所寄存信息,按对应于该方法将被执行的程序执行环境的预定格式,将该一次源代码变换为利用与一次源代码相同的编程语言描述的二次源代码。
从下面结合各个附图的对本发明的优选实施例的描述中,本发明的这些和其它的目的、特点和优点将更加明显。
图1是借助于包含本发明的存根发生器形成一个存根方法的程序的说明;
图2是表示存根发生器执行的处理的图;
图3是按照利用一个指定器“活动(active)”所处理的分类定义的说明;和
图4是产生存根方法的常规程序的说明。
通过形成实现客户对象和服务器对象之间的对象交互的应用程序的过程叙述来描述按照本发明的源代码变换处理。按照本发明的记录媒质存储实现在下文描述的存根发生器的程序。术语“记录媒质”的使用意味着任何类型的计算机可读存储媒质,诸如磁盘、磁光盘、相位变化光盘、光盘、ROM(只读存储器)、RAM(随机存取存储器)等等。
参照图1,形成用于对象交互的应用程序的处理以被称之为“第一”、“第二”和“第三”源代码的三种源代码的形成开始。
第一源代码含有存根方法的描述。这意味着,用于对象交互的接口是由第一源代码定义的。第一源代码是利用扩展到允许预定指定器“活动”使用的C++描述的,这种扩展试图能使该描述涉及存根方法。指定器“活动”已经由专门为了本发明的目的C++的扩展进行定义。按照“活动”指定的成员函数(member function)是对应于该存根方法的成员函数。在图1中,描述第一源代码的文件F1由“Test.h”表示。
第二源代码含有按C++描述的服务器对象信息。该第二源代码不含有按第一源代码描述的对象交互信息,而含有服务器对象信息部分,该第二源代码还含有,例如用于从由第一源代码描述的存根方法中调用产生执行基于接收的消息进行处理的子程序的方法的程序。在图1中,描述第二源代码的文件F2是由“Test svc_proc.cc”表示。
第三源代码含有按C++描述的客户对象信息。应当注意,第三源代码不包括按第一源代码描述的的对象交互信息,而包括客户对象信息部分。因此,第三源代码含有用于实现一个主功能的描述,例如以应用程序的形式连接到一个适当的服务上。在图1中,描述第三源代码的文件F3是由“Test.cc”表示。
第一源代码由存根发生器1变换为利用C++描述的源代码,而不使用上述的指定器“活动”。换言之,存根发生器1变换源代码,以使利用C++描述指定器“活动”指定的成员函数,该C++未被扩展到能够使用指定器“活动”。因此,产生一种存根方法,该方法是由与描述第二和第三源代码所使用的编程语言,即C++一样的编程语言描述的。
更具体地讲,由存根发生器1执行的变换从描述第一源代码的文件F1中产生:含有服务器对象的存根方法描述的文件F4、含有客户对象的存根方法描述的文件F5、和涉及对象交互的各个对象所公共使用的包含文件F6。
在图1中,含有服务器对象的存根方法描述的文件F4由“TestStub.cc”和“TestStub.h”代表。在下文这个文件F4将被称为“服务器存根文件F4”。“TestStub.h”文件是一个包括在“TestStub.cc”中的包含文件。含有客户对象的存根方法描述的文件F5由“TestProxy.cc”和“TestProxy.h”代表。在下文这个文件F5将被称为“客户存根文件F5”。“TestProxy.h”是一个包括在“TestProxy.cc”中的包含文件。由涉及对象交互中的对象公共使用的包含文件F6是由“TestEntry.cc”和“TestMsg.h”代表。这个文件将被称为“公共存根文件F6”。作为所描述的变换的结果,包含在文件F4、F5和F6中的源代码正如在第二和第三源代码的情况一样利用C++进行描述,而不利用指定器“活动”。
然后,对每个含有第二源代码描述的F2文件、含有第三源代码描述的文件F3、和由存根发生器1产生的文件F4到F6进行编辑,和编辑的结果被进行链接,因此形成服务器对象可执行文件F7和客户对象可执行文件F8。
因此,在如图1所示的处理中,由具有编程器和链接器的可执行文件发生程序2从包括描述第二源代码的文件F2(Tes_svc_proc.cc)、含有为服务器对象的存根方法描述的服务器存根文件F4(TestStub.cc,TestStub.h),和由参与对象交互的对象公共使用的公共存根文件F6(TestEntry.h,TestMsg.h)组成的资源中产生服务器对象可执行文件F7。
同时,由具有编程器和链接器的可执行文件3从包括描述第三源代码的文件F3(Test.cc)、含有为客户对象的存根方法描述的客户存根文件F5(TestProxy.cc,TestProxy.h)、和由参与对象交互的对象公共使用的公共存根文件F6(TestEntry.h,TestMsg.h)组成的资源中产生客户对象可执行文件F8。
现在将对存根发生器1进行详细描述。
存根发生器1被设计得不使用接口定义语言,而通过使用指定器“活动”,非常容易和具有高度灵活性地产生存根方法。
更具体地讲,存根发生器1是利用面向对象编程技术形成的源代码变换程序,和它被试图用于产生用于对象交互中的存根方法。存根发生器1将借助于指定器“活动”描述存根方法的源代码变换为不利用那种指定器而按C++语言描述存根方法的源代码。更具体地讲,在如图1所示的程序中,存根发生器1起到借助于指定器“活动”变换描述存根方法的文件F1(Test.h),从而产生存根文件F4(TestStub.cc,TestStub.h)、客户存根文件F5(TestProxy.cc,TestProxy.h)、和公共存根文件F6(TestEntry.h,TestMsg.h)。
正如将从图2所看到的那样,存根发生器1主要包括分析输入的源代码的分析部分4,和从所分析的源代码中产生一个存根方法的产生部分5。分析部分4分割输入的源代码为一些连续的单元,产生该程序的中间表示,而产生部分5从由分析4产生的中间表示中产生一个存根方法。
分析部分4的组态对应于描述输入的源代码的编程语言。因此,当使用不同的编程语言描述输入到存根发生器的源代码时,分析部分4具有不同的组态。然而,应当理解无论编程语言什么类型,分析部分4产生同样的中间表示。因此,公共发生部分5可以被用于描述输入到存根发生器1的源代码的不同的编程语言。
图2通过例子的方式表示由存根发生器1执行的处理。输入处理例程11(CharInput)接收按扩展到使用指定器“活动”的C++描述文件F1(Test.h)。例程11去掉来自输入源代码的无用空格和注解,以便提取有意义的编程项。在这个输入处理例程11中,由被扩展的C++定义的指定器“活动”也被作为保留字进行识别。
一个后续指定器,即项分析指定器(TokenAnalyze)12分析在输入处理指定器中提取的各个项和产生按照令牌安排的有意义的编程项的令牌码流(token stream),这些令牌是一些逻辑单元。这个项分析例程还识别由扩展的C++定义的指定器“活动”。
输入处理例程11,以及项分析例程12使用一种符号表管理对象(SymbolManage)13。符号表管理对象13具有称为“符号表”的数据结构,该结构含有涉及各种例程构成单元的信息。例如,如图3所示的符号表储存涉及指定器“活动”指定的类信息,包括类名称和含在类中的函数名称和它们的返回值,以及各个功能的参数名称和参数类型。每个函数可以使用两个或多个参数。在这种情况下,寄存在表中的信息含有这些参数的名称和类型。
寄存在符号表管理对象13中的内容是动态可变的。这就是说,其内容可以根据产生的存根方法按期望改变。
返回到图2,然后语法分析(SyntaxAnalyse)14对作为项分析例程12的结果的令牌码流进行语法分析。作为这个分析的结果,所谓语法树信息,产生构成令牌流的各个令牌之间的相关性的指示,存储到语法树对象(TreeManage)15中。因此,获得的语法树信息构成了上述的中间表示的部分。
输入的源代码按照所描述的方式由分析部分4进行分析,从而获得一个中间表示。然后,产生部分5进行操作,从由分析部分4所产生的中间表示中产生目标源代码。更具体地,包括在产生部分5中的码产生例程(CodeGenerate)16根据作为由语法分析例程14执行的分析结果获得的语法树信息产生和输出目标源代码。更具体地讲,码产生例程16调用码产生对象(CodeGenManage)17。码产生对象17包括用于从通过由分析部分4执行的分析获得的中间表示中产生目标源代码的方法。因此,由码产生对象17产生目标源代码。
更具体地讲,码产生对象17产生和输出服务器存根文件F4(TestStub.cc,TestStub.h)、客户存根文件F5(TestProxy.cc,TestProxy.h)和公共存根文件F6(TestEntry.h,TestMsg.h)。这些文件F4、F5和F6已经按C++描述,而不用指定器“活动”。
存根发生器1被配置,以便寄存在码产生对象17中的预定的模式文件F9。这些模式文件F9是可转换的,以便产生对应于不同程序执行环境的存根方法,正如将从下面的描述所理解的那样。
一般,一个应用程序在由操作***提供的预定程序执行环境下被执行。现存多种程序执行环境。
例如,操作***“Aperios”(注册商标)被设计成同时提供多个不同的程序执行环境。每个程序执行环境被称之为“亚空间”(meta space)。更具体地,操作***“Aperios”可以同时提供称为“mAV亚空间”的亚空间和称为“mCOOP亚空间”的亚空间。mAV亚空间用于执行所谓过程程序。在mAV亚空间执行的应用程序是作为一个单一对象进行描述的。另一方面,mCOOP亚空间用于面向对象程序。一般,在mCOOP亚空间执行的应用程序是由多个对象构成的。
当操作***“Aperios”上载到具有电视(TV)功能的装置中时,可以这样安排,即在电视上显示运动图像的应用程序在mAV亚空间执行,而实现图形用户接口(GUI),用于控制将一些操作指令输入到装置中的操作板的应用程序,是在mCOOP亚空间执行的。使用于在mAV亚空间中执行的应用程序中的存根方法,与使用于在mCOOP亚空间执行的应用程序的存根方法不同。
由存根发生器1产生的存根方法必须适合于该存根方法执行的程序执行环境。更具体地讲,在mAV亚空间执行的应用程序的存根方法必须正确地在mAV亚空间运作。同样,在mCOOP亚空间执行的应用程序的存根方法必须正确地在mCOOP亚空间运作。
因此,在所描述的实施例中的存根发生器1中,对应于多种不同程序执行环境的模式文件F9可以被寄存在码产生对象17中,以便可以产生用于多种不同程序执行环境的存根方法。换言之,对应于相应程序执行环境的模式文件F9被寄存在码产生对象17中,以便根据所希望的存根方法执行的程序执行环境选择使用,从而按照多种不同程序执行环境的每一种产生存根方法。
更具体地讲,参照图2,在一个存根方法产生之前,形成描述用于产生对应于各个程序执行环境的存根方法所需信息的模式文件F9,寄存在存根发生器1中。当接收到模式文件F9时,存根发生器1激活模式文件输入处理例程(PatternInput)18,该例程接收这些模式文件F9和寄存所接收的模式文件F9,作为在码产生对象17中的内部信息。应当注意,在码产生对象17中的模式文件F9的寄存是利用模式文件和程序执行环境之间的清楚关系引导的,即各个程序执行环境与每个模式文件一一对应。
当产生一个存根方法时,存根发生器1参考模式文件F9中的一个模式,该模式对应于执行产生的存根方法的程序执行环境。因此,单一的存根发生器1可以产生对应于多种不同程序执行环境的存根方法。
还应当理解为,对于不同程序执行环境的模式文件F9的寄存能使存根发生器1动态地改变产生存根方法的程序。例如,当希望产生对应于一个新的程序执行环境的存根方法时,对应于该新的程序执行环境的一个模式文件F9被输入到存根发生器1,使得存根发生器1产生对应于该新的程序执行环境的存根方法。同样,当现存的程序执行环境已经被更新时,对应于这个程序执行环境的模式文件F9被相应地修改和代替现存的模式文件F9被寄存。从而,对于更新的程序执行环境产生存根方法。
输入到存根发生器1的源代码利用按通用于不同程序执行环境的格式的指定器“活动”进行描述,上述格式即利用独立于执行待产生的存根方法的程序执行环境的格式。因此,描述在每个模式文件F9中的内容包括,用于将按通用于多种不同的程序执行环境描述的源代码变换为对应于一种选择的程序执行环境的另一源代码的信息。
因此,用于这个实施例的存根发生器1,通过参考寄存的模式文件F9,将含有按通用多种不同程序执行环境的格式描述的存根方法信息的源代码变换为对应于执行存根方法的程序执行环境的预定格式的另一源代码。
正如从上面的描述将会理解的那样,本发明不利用接口定义语言,而通过利用存根发生器1可以产生存根方法。这消除了研究和学习接口定义语言的必要,其对于不熟悉接口定义语言的人当想编制使用存根方法的应用程序时是需要的。因而,本发明大大方便了利用存根方法形成应用程序。
使用在所描述的实施例中的存根发生器1,如上所述能够不借助于接口定义语言产生存根方法,提供了另外一个优点,消除了现有技术所遇到的问题,即证实按接口定义语言描述的部分提供的接口与诸如C++之类的编程语言所描述的部分接口相符合的困难。因此,利用这种存根发生器1提供的另一优点是关于对象交互接口的证实,由存根方法所执行的工作更加容易实现了。
另外一个优点是,因为参考了对应于执行存根方法的程序执行环境的所寄存的模式文件F9,所以源代码的变换可以通过利用通用于多种不同程序执行环境的一个单一的存根发生器1执行。
再一个优点是,存根发生器1借助于寄存对应于多种不同程序执行环境的每个的模式文件F9的特征,允许动态改变存根方法产生程序。因此,存根发生器1通过改变模式文件F9的内容,可以产生在该存根发生器1的初始设计中未予考虑的存根方法。
正如从上面的描述将会理解的那样,本发明提供一种源代码变换方法,该方法能够不利用任何接口定义语言,以高容易度和灵活性,以及对各种程序执行环境的宽的适应性产生存根方法。
虽然本发明已经通过它的优选形式进行了描述,但是应当理解为,所描述的实施例仅是说明性的。例如,虽然C++已经被具体地描述为描述源代码的编程语言,但是本发明还可以等效地利用另外的编程语言进行实施。在不脱离仅由所附的权利要求书进行限制的本发明的范围情况下,对本发明还可以作出进一步的改变和修改。
Claims (2)
1.一种源代码变换方法,包括以下步骤:
准备以预定编程语言描述和含有涉及用于对象交互的方法的信息的一次源代码,所述信息是按通用于多种不同程序执行环境的格式描述的;和
通过参考对应于执行所述方法的程序执行环境的寄存信息,按对应于执行所述方法的程序执行环境的预定格式,将所述一次源代码变换为利用与一次源代码相同的编程语言描述的二次源代码。
2.一种计算机可读记录媒质,该媒质存储实施包括以下步骤的一种方法的源代码变换程序。
准备以预定编程语言描述和含有涉及用于对象交互的方法的信息的一次源代码,所述信息是按通用于多种不同程序执行环境的格式描述的;和
通过参考对应于执行所述方法的程序执行环境的寄存信息,按对应于执行所述方法的程序执行环境的预定格式,将所述一次源代码变换为利用与一次源代码相同的编程语言描述的二次源代码。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9225239A JPH1165832A (ja) | 1997-08-21 | 1997-08-21 | ソースコード変換方法及び記録媒体 |
JP225239/97 | 1997-08-21 | ||
JP225239/1997 | 1997-08-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1214486A true CN1214486A (zh) | 1999-04-21 |
CN1103962C CN1103962C (zh) | 2003-03-26 |
Family
ID=16826185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98124345A Expired - Fee Related CN1103962C (zh) | 1997-08-21 | 1998-08-21 | 源代码变换方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6546549B2 (zh) |
JP (1) | JPH1165832A (zh) |
CN (1) | CN1103962C (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
FR2795835B1 (fr) * | 1999-07-01 | 2001-10-05 | Bull Cp8 | Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce |
WO2001057654A2 (en) * | 2000-02-07 | 2001-08-09 | Insignia Solutions Plc | Preprocessing of interfaces to allow fast call of native elements |
US20030070159A1 (en) * | 2000-08-04 | 2003-04-10 | Intrinsic Graphics, Inc. | Object decription language |
JP2002132739A (ja) * | 2000-10-23 | 2002-05-10 | Nec Corp | スタブ検索ローディングシステム及び方法、サーバ装置、クライアント装置並びにコンピュータ可読記録媒体 |
US6922827B2 (en) * | 2002-02-22 | 2005-07-26 | Bea Systems, Inc. | Iterative software development environment with prioritized build rules |
CA2453605C (en) * | 2003-12-17 | 2009-06-30 | Ibm Canada Limited-Ibm Canada Limitee | Integrated visual and language-based system and method for reusable data transformations |
US20050138606A1 (en) * | 2003-12-17 | 2005-06-23 | Sujit Basu | System and method for code migration |
US8813047B2 (en) * | 2005-09-08 | 2014-08-19 | Alcatel Lucent | Yet another transformation language (YATL) |
US7353504B2 (en) * | 2005-12-09 | 2008-04-01 | Bea Systems, Inc. | System and method for efficiently generating native code calls from byte code in virtual machines |
JP5521616B2 (ja) * | 2010-02-17 | 2014-06-18 | 日本電気株式会社 | 転送プログラム生成装置、転送プログラム生成方法およびプログラム |
US8863082B2 (en) * | 2011-09-07 | 2014-10-14 | Microsoft Corporation | Transformational context-aware data source management |
US10846059B2 (en) | 2019-02-05 | 2020-11-24 | Simply Inspired Software, Inc. | Automated generation of software bindings |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0274281B1 (en) * | 1987-01-05 | 1992-06-10 | Systran S.A. | Method using a programmed digital computer system for translation between natural languages |
US6157961A (en) * | 1992-12-21 | 2000-12-05 | Sun Microsystems, Inc. | Client-side stub interpreter |
US6138140A (en) * | 1995-07-14 | 2000-10-24 | Sony Corporation | Data processing method and device |
JPH09179738A (ja) * | 1995-12-26 | 1997-07-11 | Hitachi Ltd | オブジェクト指向言語処理方法及び処理装置 |
US6347342B1 (en) * | 1996-07-15 | 2002-02-12 | Next Software, Inc. | Method and apparatus for dynamically brokering object messages among object models |
US5999988A (en) * | 1997-03-31 | 1999-12-07 | Sun Microsystems, Inc. | Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems |
US6058431A (en) * | 1998-04-23 | 2000-05-02 | Lucent Technologies Remote Access Business Unit | System and method for network address translation as an external service in the access server of a service provider |
US6453362B1 (en) * | 1998-08-12 | 2002-09-17 | International Business Machines Corporation | Systems, methods and computer program products for invoking server applications using tickets registered in client-side remote object registries |
-
1997
- 1997-08-21 JP JP9225239A patent/JPH1165832A/ja not_active Abandoned
-
1998
- 1998-08-19 US US09/136,488 patent/US6546549B2/en not_active Expired - Fee Related
- 1998-08-21 CN CN98124345A patent/CN1103962C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6546549B2 (en) | 2003-04-08 |
US20020013936A1 (en) | 2002-01-31 |
JPH1165832A (ja) | 1999-03-09 |
CN1103962C (zh) | 2003-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1103962C (zh) | 源代码变换方法 | |
US7391735B2 (en) | Parsing messages with multiple data formats | |
US6275849B1 (en) | Communication system for electronic messages | |
Witt | Runtime analysis of the (μ+ 1) EA on simple pseudo-Boolean functions | |
US5968127A (en) | Information processing apparatus | |
CN101599011B (zh) | 文档处理***和方法 | |
EP1046990B1 (en) | Methods and apparatus for storage and retrieval of name space information in a distributed computing system | |
US6115710A (en) | Portable and dynamic distributed transaction management method | |
CN1132437C (zh) | 用于在通信***中生成业务的***及方法 | |
CN101322126A (zh) | 文档处理***和方法 | |
CN1625179A (zh) | 按可定制的、基于标签协议中的引用发送 | |
JPH06282472A (ja) | 構造化データを転送する自己生成ノードネットワーク生成方法とその装置 | |
CN101060537A (zh) | 一种通信网络仿真工具的实时视景显示平台及其实现方法 | |
JP2711220B2 (ja) | 固定オブジェクト記憶システム | |
US20030122867A1 (en) | Method and apparatus for assembling enterprise javabeans components | |
US20040167915A1 (en) | Systems and methods for declaratively transforming data objects between disparate representations | |
Gottfried et al. | Symbolist: An open authoring environment for end-user symbolic notation | |
CN1101027C (zh) | 外部字符管理器 | |
CN1945692A (zh) | 一种在语音合成***中提升提示音匹配效果的智能方法 | |
CN1208481A (zh) | 分布式处理 | |
CN1578301A (zh) | 编辑数据流的方法和设备 | |
KR20040074766A (ko) | 객체 지향 프로그램이 기록된 저장 매체 | |
Naffah | Multimedia applications | |
CN101059758A (zh) | 屏幕转换程序生成方法及设备 | |
US20030145051A1 (en) | Method and system for selecting multiple sets of data in an application |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |