用于计算机任务自动化和指令传送的软件代理的制作方法

文档序号:6083373阅读:352来源:国知局
专利名称:用于计算机任务自动化和指令传送的软件代理的制作方法
技术领域
本发明是关于使用一种代理(AGENT)来编译、记录、读出以及监视在计算机上运行的程序使用的指令。
在许多应用程序中,为了与应用程序相互配合,都有记录用户击键的装置。所有这些贮存在宏文件中的击键,以后均可以读出。这种采用宏功能的读出可允许用户简单地反复执行一组复杂的命令。此外,用户能把经常重复的任务简化为宏功能的操作。
一般,使用宏功能的这种类型已经应用到语法层次(syntaxlevel)上。这里,“语法层次”的含义是用户进行的一种动作,如击键或鼠标(mouse)的移动,以便与一种应用相互配合。例如,为以后读出可建立的宏文件,一般贮存一系列的击键程序。执行一种宏功能的应用程序仅仅是重现了已贮存的击键,并且执行它们,好像用户就在键盘上击键似的。
为了简化宏文件的建立,一种应用程序经常具有“记录”方式,它使用户与应用程序互相配合,从而完成任务。在完成任务当中,用户所用的击键被记录在宏文件中。然后,每逢要重复该任务的时候,就可以读出宏文件。
尽管在宏文件中贮存用于读出的击键是一种有效的实用方法,但在许多方面还是不够的。例如,对于在宏文件中贮存击键的流程图是应用相关的,它们由一种特殊的应用程序执行,该应用程序具有其自身的一组标准规则。况且这种流程图是按照语法规则操作,同时要求用户了解这种特殊应用程序的语法,以便正确地建立起能对在那个应用程序进行正确操作的宏文件。此外,在系统中缺少固有的反馈,无法考虑在击键被记录的时间和击键被读出的时间之间构成目标的位置或状态的任何差异。再者,当读出操作超出建立宏文件的特殊应用程序的范围时,一般就无法建立起这样的宏文件。
按照本发明优选实施例,提出了一种计算系统,该系统包括多个应用程序。每一个应用程序包括一动作处理器,该处理器接收包含有用户按语法规则的动作消息。这些动作被译成语义命令。该语义命令送到命令处理器以便执行。
该计算系统的优选实施例还包括一代理器(agentengine)。该代理器能够被用来执行多种功能。它可以用来从一应用程序接收语义命令,并记录该语义命令以便在以后读出。它可以用来将语义命令从一个任务语言文件送到一应用程序,以便由命令处理器执行。它也可以用来截取从动作处理器送到命令处理器的语义命令。在该命令被截取之后,代理器可以用来使语义命令执行或阻止语义命令脱开执行状态。这种截取语义命令的能力在以计算机为基础的训练中是特别有用的。
就一个用户与应用程序的相互配合能力而言,本发明具有很大的通用性。用户可以记录、读出并监视在语义命令层次上的应用程序所执行的动作,而不是在用户按语法规则的层次上的应用程序所执行的动作。
本发明的这种和其他方面的优点,根据以下对优选实施例的说明,将是明显的。


图1是一个方块图,它表示应用程序、代理环境和求助环境之间的相互作用。
图2是一个方块图,它表示按照本发明优选实施例,任务语言文件是如何产生及如何执行的。
图3表示按照本发明的优选实施例,图1中的应用程序的一个方块图。
图4表示按照本发明的优选实施例,一个通过示于图1中的应用程序的数据流的方块图。
图5是按照本发明的优选实施例的一个编译程序的示意图。
图6表示按照本发明的优选实施例的一个计算机、监控器、键盘和鼠标。
图7表示图6所示的鼠标顶视图。
图8至图18表示按照本发明的优选实施例,在用户的动作被记录和被读出的用户对话期间,在图6表示的监视器上的显示是如何出现的。
图19表示图5中的编译程序中的数据流。
图1是按照本发明的优选实施例的一个计算系统的方块图。用户111通过软件环境112与计算系统通信。软件环境112可以是,例如MicrosoftWindous(微型软件窗),它是由微型软件公司(MicrosoftCorporation)出售的一种程序,营业地址在16011NE36thWay,RedMONd,WAY98073-9717。软件环境112与一应用程序100相互配合。包含有描述用户动作信息的消息由软件环境112送至应用程序100。在优选实施例中,包含有用户动作的消息是由微型软件窗送出的标准消息。应用程序100包括一个动作处理器101,它把用户按语法规则的动作转换成一单个语义命令。例如,动作处理器101监视“卡搭”声(clicks)和用户使用的鼠标的移动,并等待直到产生语法上有意义的命令为止。动作处理器101能够在语法上说明用户所能建立一特殊命令的许多方法。除用户按语法规则的动作外,动作处理器101还处理其他到达应用程序100的消息。某些消息将引起语义命令的产生;其他的消息将完全地由动作处理器101处理。
应用程序100还包括一命令处理器102,它执行语义命令。命令处理器102接收以内部形式表示的语义命令(内部形式将更充分地在下面进行讨论)而如果命令不能被执行,则返回一个出错。
应用程序100和软件环境112在应用程序100之间的接口等级上同求助环境119互相配合。求助环境119包括求助应用程序103,它使用求助正文104。求助环境还包括求助工具105,用它来产生求助正文104。
软件环境112还同一代理环境118互相配合。该代理环境118包括代理任务107和代理器108。
代理器108在5个不同概念类型上与应用程序100相互配合,以便执行5种功能。为了进行查询,代理器108通过数据通道113与动作处理器相互配合。为了监视应用程序100的活动,代理器108通过数据通道114在动作处理器101和命令处理器102之间互相作用。为了让命令由应用程序100执行,代理器108通过数据通道115与命令处理器102相互配合,代理器为了处理在处理应用程序100中执行命令的出错,108通过数据通道116与命令处理器102相互配合。为了记录应用程序100的执行情况并接收命令完成的通知,代理器108通过数据通道117与命令处理器102相互配合。
在本发明的优选实施例中,命令可以用四种方法表示,(1)任务语言形式,按关键字和参数形式贮存,(2)P码形式,它是按外部形式具有由代理器108说明的附加标题的二进制码;(3)外部形式,它是由应用程序100理解的二进制数据,并且在代理器108和应用程序100之间通过;以及(4)内部形式,作为应用程序100中执行的二进制命令。这四种表示命令的方法在附加的附录A中将进一步加以描述。
图2表示整个代理系统是如何运转的方块图。一任务语言文件131是含有任务语言的文件,任务语言是描述一应用功能性的命令的正文形式。任务语言由与类别相关的命令和与类别独立的命令所组成。类别相关的命令是由应用程序执行的命令。在图2中,只表示一个应用程序,即应用程序100;但是,代理器108可以与许多应用程序相互配合。
在本发明优选实施例中,由应用程序操作的数据文件用目标进行访问。每一个目标包含访问一个数据文件和访问一应用程序。那些访问同样应用程序的目标被认为是同类别成员。每一个应用程序执行不同的一组命令。因此类别相关命令按应用程序的不同而不同。
代理器108执行由它理解的类别独立命令,类别独立命令由代理器108执行,而不由应用程序来执行。
任务语言文件131由类别独立分析程序122准备P码文件121,在准备P码文件121时,独立分析程序122调用类别相关分析程序123、124等。如以下将要进一步描述的那样,类别相关分析程序是这样一种分析程序,它产生用P码形式封装的类别相关的命令。代理器108提取来自P码形降云渫獠啃问奖硎镜恼庑┟睢2颜庑┟钏偷绞实钡挠τ贸绦颉T赑码中的一个类别域表示哪一个应用程序接收一特殊的类别相关命令。类别独立分析程序122是这样一种分析程序,它产生由代理器108执行的P码。
任务语言文件131可以由用户111结合代理任务编辑程序132准备。另一方面,任务语言文件可以使用利用了类别相关记录装置126,127等的类别独立记录装置125作准备。通常,记录装置记录应用程序的用于以后读出的命令。当计算系统工作在记录方式时,代理任务编辑程序132接收来自应用程序(如图所示的应用程序100)的输入,这些输入详述代理器108和应用程序将采用何种操作。应用程序通过应用程序接口(API)130连接到代理任务编辑程序132。当计算系统处于记录方式时,代理任务编辑程序132把数据转送到类别独立记录装置125,而当代理任务编辑程序由用户111使用时,代理任务编辑程序132把数据转送到任务语言文件131。
类别独立记录装置125接收信息并建立任务语言文件131。当类别独立记录装置125检测到代理任务编辑程序132正在转送由一个应用程序产生的有关动作信息时,类别独立记录装置为该应用程序调用类别相关记录程序,于是产生那个动作的任务语言形式类别独立记录装置125,为代理器108采用的动作产生任务语言的形式。
当执行P码文件121时,代理器108读出每一个P码命令,同时确定该P码命令是包含有由代理器108执行的类别独立命令,还是包含有由一应用程序执行的一类别相关命令。如果该P码命令包括一类别独立命令,则代理器108执行该命令。如果该P码命令包含一类别相关命令,代理器108用P码命令确定接收该命令的应用程序。然后,代理器108取出插入P码中的外部形式表示的类别相关命令。然后该类别相关命令被送到应用程序。例如,如果该类别相关命令是用于应用程序100,则该类别相关命令就送到应用程序100。在应用程序100内部,一译成内部形式的处理器128用来把该类别相关命令-以外部形式传送的命令-译成该命令的内部形式。
在代理器108和应用程序之间相互作用的过程中,使用了API130,API130是用于存取代理器108和其他设备的一组功能和消息。
当该系统处于记录方式时,译成内部形式的处理器128通过在图3中所示出的一命令接口部件146翻译来自代理器108的命令将它们馈送到命令处理器102。一译成外部形式的处理器129接收以内部形式表达的已经由命令处理器102执行的命令。这些命令通过图3所表示的返回接口部件147而被接收。译成外部形式的处理器129将以内部形式表示的命令译成以外部形式表示的命令。于是该以外部形式表示的命令通过API130传送到任务编辑程序132。
图3更详细地表示本发明优选实施例中的应用程序100的结构。应用程序100包括一用户动作接口部件145,它与软件环境112和命令接口部件146相互配合,后者既同动作处理器连接还同命令处理器102相连接。如图所示,动作处理器101和命令处理器102两者都存取应用数据144。返回接口部件147响应命令处理器102并将控制返回软件环境112。译成外部形式的处理器129与返回接口部件147相互配合。当应用程序100处于读出方式或记录方式时,返回接口部件147才被调用。这些方式将更全面地在下面加以描述。返回接口部件147向代理器108指示一个命令已由应用程序100执行以及应用程序100已准备接受下一命令。
在应用程序100中,还包括一模态对话单元处理器148和一出错对话单元部件149。它们都和软件环境相互配合,以控制与一用户111连通的对话单元的显示。
某些应用程序每一次能用多个窗口来进行操作。当这样做的时候,对应用程序操作所在的每一窗口附加一个无固定方式用户动作接口部件,一个无固定方式动作处理器,以及一个无固定方式命令接口部件。例如,在应用程序100中,表示出一个无固定方式用户动作接口部件141,一个无固定方式动作处理器142,以及一无固定方式命令接口部件143。
图4表示在应用程序100中的数据流。加到应用程序100的消息由用户动作接口部件145接收。对于某些类型的消息,例如,来自求助应用程序103的消息,用户动作接口145使应用程序100立即返回。否则,该消息被转送到读出消息测试部件150。
如果消息是用于读出已经由记录或分析产生的命令,则该消息被送到译成内部形式的处理器128,它把消息中以外部形式表示的一个命令译成内部形式。之后,该命令转送到命令接口部件146。
如果该消息不是一个读出消息,则该消息被送到例如动作处理器101,以便在语法上说明由该消息产生的一用户动作。如果不存在由动作处理器或由译成内部形式处理器128产生的语义命令,则读出消息测试部件150使应用程序100返回。如果存在一产生的语义命令,则该命令被转送到命令接口部件146。
如果代理器108正在监视由应用程序100执行的命令,则命令接口部件146把接收到的任一数据送到译成外部形式的处理器129,后者把命令转换成外部形式并把该命令传送到代理器108。命令接口部件还把数据转送到一个模态对话单元测试部件152。
如果该转送的数据包含有一对于对话单元的请求,则模态对话单元测试部件152传送该数据到模态对话单元处理器148进行处理。否则,模态对话单元测试部件152传送该数据到命令测试部件151。
如果该数据包含有一命令,则命令测试部件151传送该命令到命令处理器102以便执行。命令测试部件151传送该数据到返回接口部件147。
如果代理器108正在记录命令,则返回接口部件147传送该数据到译成外部形式的处理器129以便转换成外部形式,同时通过返回接口部件147传送到代理器108。返回接口部件复原,直到接收下一个消息。
以下的讨论将按照本发明的优选实施例陈述动作是如何进行记录和读出的。
如图8所示,一应用程序“NewWaveoffice”正在一个窗口205内运行。在该窗口中,有一个用图201表示的目标“Joe”,一个用图206表示的文件“Bill”(帐单),以及用图202表示的文件“Sam”。目标“Joe”包括查阅文本文件和查阅一个按文本文件进行操作的应用程序。文件“Sam”已经打开,因此,图202划了影线,而窗口204表示了文件“Sam”的内容。在文件“Sam”中一个用图203表示的文件“Fred”。如图6所示,光标200由鼠标20或键盘19控制。
图6还表示出一台计算机18和监视器14,窗口205就显示在该监视器上。图7表示包括有按钮27和28的鼠标20。
用鼠标20把光标200放在目标“Joe”的上面,同时按下按钮27,在文件“Bill”上面移动光标200,再释放按钮27,目标“Joe”则可放进文件“Bill”内。与此相类似,用鼠标20把光标200放在目标“Joe”的上面,按下按钮27,在窗口204内移动光标200,再释放按钮27,则目标“Joe”可放进文件“Sam”内。最后,用鼠标20把光标200放在目标“Joe”的上面,按下按钮27,在文件“Fred上面移动光标200,再释放按钮27,则目标“Joe”可放进文件“Fred”内。
正如现在将要描述的,目标“Joe”在文件“Fred”内的位置,在文件“Sam”内或在文件“Bill”内的位置是可以记录的。用户每次移动鼠标20,包含有一个用户按语法规则动作的消息由用户动作接口部件145接收,然后通过读出消息测试部件150转发到动作处理器101。按照这些用户按语法规则的动作,动作处理器101产生由命令处理器102执行的一个语义命令。
下面将描述在文件“Bill”中目标“Joe”位置的记录。图8中窗口205是活动的,光标200可以在窗口205内自由移动。如上所述,当用户移动鼠标20时,用户按语法的动作被送到动作处理器101。动作处理器101追踪光标200的座标位置。当按下按钮27时,动作处理器101校验查看在光标200的目前所在座标处存在什么。如果按下按钮27时,光标200在目标“Joe”上面,则动作处理器101发现目标“Joe”处在光标200的位置上。此时动作处理器101产生一语义命令“SelectDoucument′Joe′”(选择文件′Joe′)。该语义命令通过读出消息测试部件150、命令接口部件146、模态对话单元测试部件152、命令测试部件151到达命令处理器102,来执行该语义命令。该语义命令还由返回接口部件147接收并送到译成外部形式的处理器129。129赋于命令以外部形式,并将它送到类别相关记录装置125,于是也送到类别相关记录装置126,后者把以任务语言形式表示的命令记录在一任务语言文件中。
随着光标20的移动,用户按语法规则的动作不断地送到动作处理器101。动作处理器继续追跨光标200座标位置。在图9中,表示光标200在移动目标“Joe”的幻影(“phontom”)。在图10中表示光标200在文件“Bill”上面。
当释放按钮27时,动作处理器101产生一语义命令“MoveTOFolder′Bill′”(向文件“Bill”移动)。该语义命令被转到命令处理器102,由此引起前已选择的目标“Joe”转移到文件“Bill”。图11表示目标“Joe”已全部转移到文件“Bill”之中。译成外部形式的处理器129赋于命令以外部形式,并将它送到类别独立记录装置125,同时将它送到类别相关记录装置126,后者将该命令记录在一任务语言文件之中。如图12所示,当文件“Bill”被打开时,即可看到目标“Joe”。
在这种情况下,译成外部形式的处理器129没有必要取得关于目标“Joe”或者文件“Bill”的附加信息,因为应用程序“NewWaveoffice”在其内部具有自身的信息,该信息指出目标“Joe”和文件“Bill”在其自身的台式计算机上。此外,应用程序100“NewWaveoffice”明白文件“Bill”是关闭的。
在文件“Sam”中目标“Joe”位置的记录与上述类似。在图8中,窗口205是活动的。光标200可以自由地在窗口205内移动,当按下按钮27时,动作处理器101校验查看在光标200目前座标位置处存在什么。如果当按下按钮27时,该光标200处在目标“Joe”的上面,则动作处理器101发现目标“Joe”是处在光标200的位置上。那时,动作处理器101产生一语义命令“selectDocument′Joe′”(选择文件“Joe”)。该语义命令通过读出消息测试部件150、命令接口部件146、模态对话单元测试部件152、命令测试部件151到达命令处理器102,从而执行该语义命令。该语义命令还被返回接口部件147接收并送到译成外部形式的处理器129。129赋于命令以外部形式并将它送到类别独立记录装置125,因而也送到类别相关记录装置126,后者把该命令记录在一任务语言文件中。
当移动鼠标20时,用户按语法规则的操作继续送到操作处理器101。操作处理器继续追踪光标200的座标位置。在图13中,光标200处于窗口204内。当释放按钮27时,操作处理器101产生MoveTOFolder“Sam”命令。语义命令被转送到命令处理器102,从而使前已选择的目标“Joe”转到文件“Bill”。该语义命令还被返回接口部件147接收并送到译成外部形式的处理器129。129送出“APIINTERROGATEMSG”命令。该消息的功能是“APIWHOAREYOUFN”。作为该消息的结果,129得到返回的数据,该数据表示用于文件“Sam”的一个打开的窗口处在光标200的位置上。129送出另外一个“APIINTERROGATEMSG”命令。该消息的功能仍是“APIWHATSINSRERTABLEATFN”。因为在窗口204内在光标200位置处没有任何东西存在,因此,没有附加实体要加以识别。为了进一步说明APIINTERROGATEMSG,请参阅附录C。
译成外部形式的处理器赋于该命令以外部形式并把它送到类别独立记录装置125,因而也送到类别相关记录装置126,而该命令记录在任务语言文件131中。图14表示完成传送的结果目标“Joe”在窗口204中。
同样,目标“Joe”可以传送到文件“Fred”。在图15中,示出光标200放在窗口204的文件“Fred”的上面。当按钮27释放时,动作处理器101产生一语义命令“MOVETOFolder′Fred′WITHINFolder′Sam′”。该语义命令转送到命令处理器102,它使前已选择的目标“Joe”传送到文件“Sam”中的文件“Fred”。该语义命令还由返回接口部件147接收并送到译成外部形式的处理器129。
译成外部形式的处理器129按下列方式赋于该命令以外部形式。129送出消息“APIINTERROGATEMSG”。该消息的功能是“APIWHATSINSERTABLEATFN”。作为该消息的结果,129接收一返回消息,该返回消息指示文件“Fred”处在光标200的位置。译成外部形式的处理器送另一消息“APIINTERROGATEMSG”。该消息的功能是“APIWHOAREYOUFN”。作为该消息的结果,129接收返回数据,该返回数据指示文件“Sam”处在光标200的位置。
同时译成外部形式的处理器能够通过API130把以外部形式表示的该命令送到类别独立记录装置125,因而也送到类别相关记录装置126。类别相关记录装置126把该外部命令记录到任务语言文件131中。图16表示传送结果,目标“Joe”处于文件“Fred”之中。如图17所示,当文件“Fred”被打开时,即可看见目标“Joe”。
一旦外部命令记录到任务语言文件中,把目标“Joe”传送到文件“Fred”的命令即可读出。例如,假定窗口205表现为如图18那样,由于窗口204,目标正文“Joe”和文件“Fred”都处于窗口205中不同的位置,仅读出用户按语法规则的动作不能导致目标处于文件“Fred”之中。但是,所记录的几乎不是用户按语法规则的动作,而是语义命令;因此,读出语义命令将导致目标“Joe”置于文件“Fred”之中。
特别是,假定一任务语言文件包含有下列命令FOCUSONDesktop“NewWaveOffice”SELECTDocument“Joe”MOVETOFolder“Fred”WITHINFolder“Sam”。
第一条命令-FOCUSonDesktop“NewWaveoffice”-是一类别独立命令,一旦由图5所示的一任务语言编译程序所编译,可由代理器108执行。如下面将进一步描述的那样,该FOCUS命令置聚焦于应用程序“NewWaveoffice”上。这意味着,如果可能的话,该任务语言命令可视作为类别相关命令并送到应用程序“NewWaveoffice”以便执行。为了简化讨论,选取应用程序100为应用程序“NewWaveoffice”。
第二和第三命令-SELECTDocument“Joe”-以及MOVETOFolder“Fred”WITHINFolder“Sam”-是类别相关命令。这些类别相关命令,一旦由任务语言编译程序120编译成P码形式,均由代理器108接收。代理器从P码形式提取以外部形式表示的类别相关命令并将它们送到应用程序100应用程序100的用户动作接口部件145接收包含有外部命令的消息,并将该消息转到读出消息测试部件150。读出消息测试部件150把该命令送到译成内部形式的处理器128。128把外部形式表示的命令译成内部形式表示的命令,并把以内部形式表示的命令返回到读出测试部件150。然后以内部形式表示的命令通过命令接口部件146、模态对话单元测试部件152、命令测试部件151送到命令处理器102,命令处理器102执行该命令。
代理器108由启动窗口205执行命令“FOCUSonDesktop′NewWbveoffice′”。现在光标200的位置根据窗口205的座标即可确定。
当命令处理器102接收命令“SELECTDocument′Joe′”时,命令处理器102选定目标“Joe”。由于目标“Joe”处于窗口205之内,因此无需附加询问程序。
当对命令“MOVETOFolder′Fred′WITHINFolder′Sam′”形成内部命令形式时,译成内部形式的处理器128送“APIINTERROGATEMSG”消息到每一个打开的窗口。该消息的功能是“APIWHOAREYOUFN”。
当文件“Sam”的窗口接收该消息时,窗口以“Folder′Sam′”表示回答。译成内部形式的处理器128送另一消息“APIINTERROGATEMSG”,该消息的功能是“APIWHEREISFN”。文件“Fred”可做为一个参量被包括。该消息转到文件“Sam”,它返回指示在窗口204中的文件“Fred”座标的数据。译成内部形式的处理器128产生内部形式的命令MOVETO′Fred′WITHINFolder“Sam”。命令处理器102接收该命令并把目标“Joe”传送到文件“Fred”。
任务语言文件121可由用户写入的编译码产生,也可由记录产生。在图5中,示出通过一任务语言编译程序120的数据流。一任务语言文件131包括由一用户写入的命令。在本发明的优选实施例中,该任务语言是按照包括属于本说明附件B的代理任务语言指南写入的。
任务语言编译程序120是一个两遍编译程序。在第一遍中,所用的该程序包括一输入流处理程序164、一表达式语法分析程序166、一类别相关语法分析程序122、一保存文件缓冲器171,第二遍程序174,以及类别相关语法分析程序,其中表示出类别相关语法分析程序123,一类别相关语法分析程序167,以及一类别相关语法分析程序168。作为该第一遍的结果,建立起一暂时文件176。
类别独立语法分析程序122分析编在附件B中的类别独立任务语言命令。每一个在系统上运行的应用程序还具有它执行的专用命令。因此,对于每一个应用程序,开发了一单独的类别相关语法分析程序。该语法分析程序能分析为之开发的应用程序执行的命令。当应用程序被附加到系统或从系统删去,则相关类别语法分析程序可以附加到任务语言编译程序120或从任务语言编译程序120删去。
当编译开始时,类别独立语法分析程序122从输入流处理程序164请求一个标记。输入流处理程序164扫描任务语言文件131并产生该标记。然后类别独立语法分析程序122做若干事情中的一件事情。类别独立语法分析程序122可以产生P码,送到保存文件缓冲器171。如果类别独立语法分析程序122希望下一个标记是一个表达式,则类别独立语法分析程序122将调用通表达式(MakeExpression)程序(),该程序调用表达式语法分析程序166。表达式语法分析程序166从输入流处理程序164请求标记,直到该表达式结束为止。然后表达式语法分析程序166产生P码,送到文件缓冲器171,同时保存在暂时文件176中。此外,表达式语法分析程序166产生一个返回到输入流处理程序164的表达式标记。当输入流处理程序164由独立语法分析程序122提出请求时,输入流处理程序164把该表达式送到类别独立语言分析程序122。
由于FOCUS命令的结果,一特殊的类别相关语法分析程序将具有优先权。因此,在它的语法分析循环中,类别独立扫描程序122将调用类别独立语法分析程序,用于普遍具有该focus命令的应用。该类别相关语法分析程序将从输入流处理程序164请求标记,直到它已经接收到一个类别相关命令为止,这样,由类别相关语法分析程序调用的语义程序转换到外部命令形式,或者直到该类别相关语法分析程序确定它不能分析它已经接收到的表达式为止。如果该类别相关语法分析程序遇到一个表达式,则它可以要求使用调用MakeExpression()的表达式语法分析程序166。如果该类别相关语法分析程序不能分析它接收到的标记,则该类别相关语法分析程序返回一个出错,而类别独立语法分析程序将力图分析该记号。
一个FOCUSOFF命令将使独立语法分析程序122立即分析所有的命令,而不将它们送到类别相关语法分析程序。当正在分析一串独立命令时,这样做可避免相关语法分析程序软件多余的运行,从而节省了编译该任务语言所要求募扑闶奔洹 在图19中表示在独立语法分析程序122和相关语法分析程序之间的数据流。其中还示出相关语法分析程序123和124。为集中讨论关于语法分析程序之间的关系,在图19的讨论中没有考虑用扫描程序122a调用表达式语法分析程序166。
当独立语法分析程序122准备好一个标记时,独立语法分析程序122调用扫描程序122a。如果在应用上存在聚焦,则扫描程序122a进行监视。如果在应用上不存在聚焦,则扫描程序122a调用返回一标记到扫描程序122a的输入流程序164。扫描程序122a返回该标记到独立语法分析程序122a。
如果应用程序上存在一聚焦,则用于该应用程序的一相关语法分析程序具有先后次序并被调用。例如当聚焦处在语法分析程序123的应用上时,语法分析程序123通过相关扫描程序123a调用扫描程序122a。扫描程序122a监视它的状态并确定它正在被一个相关语法分析程序所调用,因此它不递归地调用其他的相关语法分析程序。扫描程序122a调用向扫描程序返回一标记的输入流处理程序164。扫描程序122a通过相关扫描程序123a返回该标记到相关语法分析程序123。虽然本发明目前的实施例包括相关扫描程序123a,然而在其他的实施例中可以消去相关扫描程序123a,而且语法分析程序123能直接调用扫描程序123a。
只要相关语法分析程序123能分析由它接收的标记,它就将继续通过相关扫描程序123a请求标记。相关语法分析程序将用这些标记调用产生插入P码的类别相关的外部命令的语义程序。当相关语法分析程序123不能分析由它接收的一标记时,相关语法分析程序将返回一个出错到扫描程序122a,然后该扫描程序122a调用输入流处理程序164,并且从输入流处理程序164接收相关语法分析程序123不能分析的标记。该标记返回到独立语法分析程序122。独立语法分析程序122分析该标记并调用语义程序,以便产生P码,供代理器108执行。下一次独立语法分析程序122从扫描程序122a请求一标记,扫描程序122a将再次调用相关语法分析程序123,直到在另一应用上出现命令FOCUSOFF或命令FOCUS为止。
当focus处在用于相关语法分析程序124的应用程序上的时候,扫描程序122a将调用相关语法分析程序124,相关语法分析程序124调用一相关扫描程序124a并类似于相关语法分析程序123那样进行操作。
图5中所示的保存文件缓冲器171从类别独立语法分析程序122和表达式语法分析程序166接收P码,并且从类别相关录法分析程序接收插入P码的外部形式命令。保存文件缓冲器171把这些信息存入一暂时文件176中。第二遍程序174取贮存在暂时文件176中的P码和以外部形式表示的命令,并执行内务处理(houskeeping),例如固定地址等,以便产生任务语言文件121。
附录A包含有API130介绍(程序员指南第4章)。
附录B包含有用于开发代理任务语言的指南(代理任务语言指南)。
附录C包含有内部任务语言的说明。
附录D包含有“APIINTERROGATAMSG”的说明。
权利要求
1.一种计算机应用程序,在计算机上运行,并回应用户,该计算机应用程序包括动作处理器,用于接收指示由用户产生的按语法规则的动作的消息,并根据按语法规则的动作产生语义命令;和命令处理器,它从动作处理器接收该语义命令,并执行该语义命令。
2.一个计算系统包括多个应用程序,每一个应用程序包括命令处理器,用于接收语义命令并执行该语义命令,以及动作处理器,用于接收消息,并根据该消息的内容产生语义命令,该语义命令送到命令处理器,以便执行;一数据文件,它包括由多个应用程序中的第一个应用程序执行的语义命令;以及代理器,它把数据文件中的语义命令送到第一个应用程序的命令处理器。
3.根据权利要求2的一个计算系统,其特征在于,每个应用程序还包括译成内部形式的装置,该装置用来接收由代理器发出的语义命令,并在把语义命令转送到命令处理器之前,把语义命令译成内部形式。
4.根据权利要求3的一个计算系统还包括记录装置,用于从多个应用程序中的应用程序接收由命令处理器执行的语义命令,并把语义命令记录在一任务语言文件中。
5.根据权利要求4的一计算系统,该应用还包括译成外部形式的装置,在语义命令由该应用送到记录装置之前,把该语义命令译成外部形式。
6.根据权利要求4的一计算系统,其特征在于,记录装置还把描述由代理器装置产生的动作信息记录于任务语言文件中。
7.根据权利要求6的一种计算装置,其特征在于,记录装置包括类别独立记录装置,用于把描述由代理器装置产生的动作信息记录于任务语言文件中;以及许多类别相关记录装置,每一个类别相关记录装置对应于多个应用程序中的一个应用程序,用于从它对应的应用中接收语义命令,并把语义命令记录于任务语言文件中。
8.一种计算系统包括多个应用程序,每一应用程序响应用户产生的按语法规则的动作,而每一应用程序包括动作处理器,用于接收指示由用户产生的按语法规则的动作的消息,并根据语法规则的动作产生语义命令,以及命令处理器,用于从动作处理器接收语义命令,并用于执行语义命令;以及记录装置,用于接收由来自许多应用程序的第一个命令处理器执行的语义命令,并用于把语义命令记录到一任务语言文件中。
9.根据权利要求8的一种计算系统还包括代理器,用于将在任务语言中的语义命令送到再次执行的第一命令处理器。
10.根据权利要求9的一种计算系统,其特征在于,应用还包括译成外部形式的装置,它在把语义命令从该应用送到记录装置之前,把语义命令译成外部形式。
11.根据权利要求10的一种计算系统,其特征在于,记录装置还把描述由代理器产生的动作信息记录于任务语言文件中。
12.根据权利要求11的一种计算装置,其特征在于,记录装置包括类别独立记录器装置,用于把描述由代理器产生的动作信息记录到任务语言文件中;以及多隼啾鹣喙丶锹计髯爸茫恳桓隼啾鹣喙丶锹甲爸枚杂Χ喔鲇τ贸绦蛑械囊桓鲇τ贸绦颍糜诮邮账杂Φ挠τ贸绦虻挠镆迕睿迅糜镆迕罴锹加谌挝裼镅晕募小
13.一种计算系统包括多个应用程序,每一个应用程序响应由用户产生的按语法规则的动作,每一个应用程序包括动作处理器,用于接收消息,该消息指示由用户产生的按语法规则的动作,并用于根据语法动作产生语义命令,和命令处理器,用于接收来自动作处理器的语义命令,并用于执行该语义命令;以及监视装置,用于截取从第一应用程序中的第一动作处理器送到第一应用程序中的第一命令处理器的语义命令。
14.根据权利要求13的一种计算系统,其特征在于,该应用还包括译成外部形式的装置,用于把语义命令译成外部形式,以及当监视装置正在截取语义命令时,把以外部形式表示的语义命令送到监视装置。
15.在一种计算系统中,用于记录用户产生的动作并将其以后读出的一种方法,该用户与第一应用相互配合,该方法包括下列步骤(a)把由用户产生的按语法规则的动作转换成语义命令;(b)当按语法规则的动作表示在计算系统上的一实体按语义命令运行时,该实体的全同性不容易由第一应用中的信息确定,产生一询问消息来识别该运行的实体;以及(c)记录包括任何被识别的实体的语义命令。
16.根据权利要求15的一种方法,其特征在于步骤(c)包括以下子步骤(c.1)把语义命令译成任务语言形式;以及(c.2)把该任务语言形式的语义命令记录到一数据文件中。
17.根据权利要求16的一种方法,其特征在于子步骤(c.1)还包括下列子步骤(c.1.a)把语义命令译成外部命令的形式,(c.1.b)用一类别相关记录装置把以外部命令形式表示的语义命令译成任务语言形式。
18.根据权利要求16的一种方法,还包括步骤(d)当用户与第二应用相互配合时,把由用户产生的用户动作记录到数据文件中。
19.根据权利要求16的一种方法,还包括步骤(d)在数据文件中按任务语言形式记录代理器产生的动作。
20.在一计算系统中,一种用于读出由一个应用程序执行的语义命令的方法。该方法包括下列步骤(e)当计算系统上的一个实体按语义命令运行时,产生一询问消息,以便识别该实体的位置;以及(f)执行该语义命令。
21.根据权利要求20的一种方法,还ㄏ铝胁街瑁 (b)从数据文件读出语义命令;以及(c)把语义命令送到应用。
22.根据权利要求21的一种方法,还包括步骤(d)把按外部形式表示的语义命令译成内部形式。
23.根据权利要求22的一种方法,还包括步骤(a)记录由用户产生的用于以后读出的动作,该用户与应用程序相互配合。
24.根据权利要求20的一种方法,其特征在于,步骤(f)包括下列子步骤(a.1)把由用户产生的按语法规则的动作译成语义命令。(a.2)当按语法规则的动作表示在计算系统上的一实体按语义命令运行时,该实体的同一性不容易由第一应用中的消息确定,产生一询问消息来识别运行的实体;以及(a.3)记录包括任何被识别实体的语义命令。
25.根据权利要求24的一种方法,其特征在于,子步骤(a.3)包括下列子步骤(a.3.a)把语义命令译成任务语言形式;以及(a.3.b)把用任务语言形式表示的语义命令记录到数据文件中。
全文摘要
一应用程序包括一动作处理器,接收包含用户按语法规则的动作的消息。这些动作被转换成语义命令,送到一命令处理器执行。
本计算系统的优选实施例还包括一代理器,用来执行许多功能;它可以用来从一个应用接收语义命令,并可以记录该语义命令,供以后读出可以用来把语义命令从一任务语言文件送到一应用程序,供命令处理器执行它还可以用来截取动作处理器送到命令处理器的语义命令,当该命令被截取之后,该代理器可执行语义命令,并根据执行情况阻止语义命令。
文档编号G01N33/53GK1038168SQ8910342
公开日1989年12月20日 申请日期1989年5月25日 优先权日1988年5月25日
发明者格伦·斯特恩斯, 巴巴拉·B·帕卡德, 罗尔夫·托马斯·沃森 申请人:惠普公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1