CN101208690B - 计算环境中翻译表达式 - Google Patents

计算环境中翻译表达式 Download PDF

Info

Publication number
CN101208690B
CN101208690B CN200680023180.9A CN200680023180A CN101208690B CN 101208690 B CN101208690 B CN 101208690B CN 200680023180 A CN200680023180 A CN 200680023180A CN 101208690 B CN101208690 B CN 101208690B
Authority
CN
China
Prior art keywords
expression formula
parameter
character string
grammer
value
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.)
Active
Application number
CN200680023180.9A
Other languages
English (en)
Other versions
CN101208690A (zh
Inventor
克雷格·W.·斯坦菲尔
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.)
Archie Taco Ltd.
Ab Initio Technology LLC
Original Assignee
Ab Initio Software LLC
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 Ab Initio Software LLC filed Critical Ab Initio Software LLC
Publication of CN101208690A publication Critical patent/CN101208690A/zh
Application granted granted Critical
Publication of CN101208690B publication Critical patent/CN101208690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Machine Translation (AREA)

Abstract

描述了一种用于翻译表达式的方法以及相应的软件和系统。所述方法包括:接受以第一语法表示的第一表达式(102),所述表达式包括使用第一语法表示字符串值的第一字符序列;识别用于表示该表达式的第二语法;以及以表示该第一表达式的第二语法生成第二表达式(104),包括利用第一字符序列生成第二字符序列,使得所述第二字符序列使用第二语法表示字符串值。

Description

计算环境中翻译表达式
背景技术
本发明涉及在计算环境中翻译表达式(expression)。
在外壳脚本语言(例如,ksh)中,可以使用前缀(例如,$)来引用在外壳脚本中的参数。在ksh中,动态环境保持之前定义的参数值。在运行外壳脚本或者赋值命令行表达式时,所引用的参数根据其在动态环境中的参数值而被绑定。在某些情况下,当以脚本语言创建脚本时,使用适合脚本语言的引用语法(quoting syntax)对于在脚本运行时保留字面值(literal value)和抑制引用的表达式中参数的绑定都是非常有用的。也可以使用其它机制来将参数绑定为预定值,例如宏展开(macro expansion)。
发明内容
在总的方案中,本发明旨在提供一种用于翻译表达式的方法,以及相应的软件和系统。所述方法包括接受以第一语法表示的第一表达式,所述表达式包括使用第一语法表示字符串值(string value)的第一字符序列;识别用于表示该表达式的第二语法;以及以表示第一表达式的第二语法生成第二表达式,包括以第一字符序列生成第二字符序列,使得所述第二字符序列使用第二语法表示字符串值。
本发明这一方案包括一个或者多个下列特征:
第一表达式包括多个可执行语句。
第一表达式包括命令行输入。
第一字符序列包括被绑定到所引用值的参数。
使用第一字符序列生成第二字符序列包括:绑定参数到所引用的值;以及根据第二语法的引用语法来生成包括所引用的值的所述第二字符序列。
第一字符序列包括包围参数的分隔符。
分隔符包括预定前缀,所述预定前缀包括其后带有引用符号的美元符号。
分隔符包括预定后缀,所述预定后缀包括引用符号。
第一字符序列包括包围字符串值表示方式的分隔符。
字符串值包括在该第一语法中用以表明参数引用的字符。
使用所述第一字符序列生成第二字符序列包括抑制字符串值中的参数绑定。
选择与计算语言兼容的所述第二语法,例如ksh、java、DML、C或SQL。
所述第二语法包括用于解释字符序列的规则。
识别第二语法包括基于在第一字符序列前的标志符来识别语法。
在总的方案中,本发明旨在提供一种用于赋值表达式的方法,以及相应的软件和系统。所述方法包括:接受存储参数定义的一个或者多个数据结构;识别所述表达式中所引用的一个或者多个参数;基于所存储的定义为每个所识别的参数确定值;以及将所确定的参数值存储在绑定环境中。
本发明这一方案包括一个或者多个下列特征:
绑定环境存储所识别参数的值以及存储对于赋值所识别的参数所必需的参数值,并且该绑定环境不必存储在所述一个或者多个数据结构中存储有其定义的全部参数的值。
该方法还包括利用绑定到来自绑定环境的值的所引用的参数来执行表达式。
表达式是程序或者脚本的一部分。
表达式包括命令行输入。
本发明的多个方案可以包括一个或者多个以下优点:
数据处理环境可以包括元数据,例如数据转换的定义或者记录格式(例如,以数据操作语言所写的)。具有依据在运行时获得的字面值定义的动态元数据是有用处的。根据所识别的语法翻译目标表达式不仅能够获得字面值,而且能够以适合所识别的语法的方式引用的字面值。而且,为了尊重(honor)用于所识别的语法的引用惯例,一些字面值可以在目标表达式的赋值中被保留。
计算系统可以在绑定环境中存储参数值。在赋值表达式(例如,在外壳脚本中的表达式或者命令行表达式)时,根据绑定环境中的参数值来绑定所引用的参数。存在与在绑定环境中保持参数值有关联的开销。为了避免必须保持绑定环境具有(例如,在参数及其定义的列表中)已定义的每个参数的值,计算系统可以扫描表达式以确定只用于实际在该表达式中所引用的参数的值和其值对于赋值所引用的参数是必须的参数的值。本发明的其它特征和优点,可以通过以下描述以及所属权利要求变得清楚。
附图说明
图1是表示计算环境和目标环境之间互动的框图。
图2是用于翻译表达式的计算环境的框图。
图3是示出数据仓库中,用于参数分配的存储区域的内容的框图。
图4是示出在本地存储器中绑定环境的内容的框图。
具体实施方式
参考图1,计算环境100支持使用源语法的源计算表达式102(例如,脚本,程序、路径名等)的规范,然后,将源表达式102翻译为目标表达式104,目标表达式104使用在多个可能的目标环境中的一个之中适合赋值(例如,执行,扩展等)的目标语法。计算环境100包括用于识别特定目标环境108的过程106,例如,外壳环境或者计算机编程语言环境,在其中对目标表达式104赋值。过程106可以基于目标表达式104中的信息,基于其它用户的输入,或者基于默认的环境,来识别目标环境。
作为这种翻译的一部分,选择性的参数替换被执行,例如,在翻译时可以基于参数分配101将一些参数引用解析(resolve),而在之后对所翻译的表达式赋值时(例如,基于外壳变量109),解析其它参数引用。翻译过程取决于目标语法的特征,特别是,涉及引用字符串和参数引用的这些特征。
期望在目标表达式的赋值中保留字面值。通常,每个目标语法包含用于引用字面值的某一些类型规定,使得不能根据其它语法方面进行赋值,例如涉及操作者、参数替换或者分隔符的语法方面。
在翻译期间,可以基于源表达式中的符号值引入目标表达式的一些字面值,例如,基于参数替换。即,在源表达式被指定时,目标表达式中的期望的文字表达式的值可能是未知的。
可以以一种语言,例如,参数定义语言(PDL)定义源表达式,该语言可以通过获取在赋值源表达式时引用的一些值来产生期望的目标表达式。这种PDL包括用于以多个可能的目标语言之一的适当语法来生成所引用的文字的机制。“表达式”包括,例如,部分脚本或者程序(包括整个脚本或者程序),或者命令行输入。
图2示出以一个或多个目标语言(例如,外壳语言或者其它脚本语言)的语法来赋值PDL表达式并执行结果目标表达式的示例性计算环境100。计算环境100包括计算系统110,计算系统110包括本地存储器120(例如,随机存取存储器)和数据仓库130(例如,位于一个或者多个非易失性存储媒体)。数据仓库130存储功能数据,例如脚本132、程序134和可以配置在多组参数中的参数分配136(例如,包括参数名、参数值,和可选的,参数属性),所述多组参数可以用于各种脚本132和/或程序134的任何一个之中。用户可以通过图形用户界面(GUI)140和/或通过命令行接口(CLI)150与计算系统互动。
参数分配136可以包括使用源PDL表达式定义的参数,所述表达式提供了一致的语法,用户可以以该语法定义参数值,所述参数值将被翻译为多个目标语法中的任何一个。参数定义可以参考其它参数的值。多个规则中的任何一个可以用于确定哪个参数可以参考哪个其它参数(例如,有序列表-参数定义可以参考先前定义的参数;或者组-在一个组中的参数可以参考另一个组中的参数)。
下面详细描述用于赋值源PDL表达式的方法,其包括接受PDL表达式,识别用于表示PDL表达式的目标语法,以及根据目标语法生成PDL表达式的表示。例如,包括PDL表达式的脚本可以包括一系列内嵌标志符(inlinetoken),每个内嵌标志符后伴有PDL表达式。计算系统110通过读取脚本中的每个标志符(指示所使用的目标语言)识别目标语法以编译所伴随的PDL表达式。因此,通过在脚本中包括指示所使用的不同的目标语言的不同的标志符,可以在脚本中改变目标语法,以编译脚本的不同部分。
被接受的PDL表达式可以包括表示字符串值的字符序列。字符序列可以通过参数引用来表示字符串值(a)(例如,将用于表示参数值的参数前缀绑定至字符串值)。或者,字符序列可以通过引用的文字表达式来表示字符串值(b)(例如,分隔符围绕字符串值的表示)。
如果PDL表达式中的字符序列通过参数引用来表示字符串值(a),则计算系统110例如根据引用的语法来识别参数引用的类型。引用可以是“直接替换”的参数引用,在这种情况下,计算系统110将参数引用绑定为参数值。或者,引用可以是“替换加引用”的参数引用,在这种情况下,计算系统110使用用于在目标语法中生成所引用文字的机制,将参数引用绑定为参数值,如下所述(例如,2.2.3)。
如果PDL表达式中的字符序列通过所引用的文字表达式表示字符串值(b),则计算系统110保留文字表达式中的字符串值而不执行替换。计算系统110根据目标语法确定哪个将作为所引用的文字表达式被解释。如果以其它方式表示参数引用(例如,直接替换参数引用)的字符序列被嵌入所引用的文字表达式,那么该字符序列不作为参数引用(例如,没有绑定到参数值)来处理。
在计算系统110为参数引用绑定值时,为了避免必须花时间利用已定义的每个参数(例如,在一列参数和它们的定义中)的值来建立动态环境,计算系统110可以扫描表达式,以确定只在该表达式中实际引用的参数的值。由于参数可以根据其它参数来定义,因此一些在表达式中没有直接引用的参数还可以在赋值直接引用的参数过程中被赋值。直接或者间接引用的参数值被存储在本地存储器120中的绑定环境中。在计算系统110赋值PDL表达式之后,计算系统以相应的目标语法生成目标表达式。然后,计算系统110可以执行目标表达式和/或将目标表达式存储在数据仓库130中。
2表达式的翻译
从源语法到目标语法的表达式翻译包括使用在翻译时已知的参数值的参数替换。源PDL语法使用多个“$-substitution”语法来以值替换参数。
源PDL语法使用第一类型的“$-substitution”语法,该语法使用“直接替换”的参数引用。该语法使用$<name>,例如,$foo,以参数foo的值直接替换字符串$foo。请注意,在$被用作字符串文字的时候不执行这种替换,例如
‘the price is $12.00’
一个以具有值1.00的参数foo直接替换的例子)具有源表达式
if($foo==3.14)
以及产生目标表达式
If(1.00==3.14)
其中$字符被用作前缀以指示分配给参数foo的值应该替换直接替换参数引用$foo。
在一些情况下,但是,替换参数引用的值不能保证在目标语法(例如,根据目标语言,例如,数据操作语言(DML))中是合法的。例如,如果在源参数绑定环境中,foo被分配值“(”(即,表示左括号字符的1个长度的字符串),那么上述源表达式产生目标表达式
if((==3.14)
如果目标语言是DML,那么在目标语法中这是非法表达式。
如果代替源表达式的是
if(“$foo”==3.14)
那么在源表达式中相同的参数替换产生合法目标表达式
If(“(”==3.14)
(如下所述,假设计算系统110不是在处理模式中,其中双引号在保护分隔符)。
但是,如果foo被分配值“””(例如,表示双引号字符的1个长度的字符串),那么在上述源表达式中以参数替换此foo值产生目标表达式
if(“””==3.14)
如果目标语言是DML,那么这是非法语法。
源PDL语法使用“$-替换”语法的第二类型,该语法使用“替换加引用”的参数引用。计算系统110将参数引用绑定为参数值,并且在所指定的目标语法中生成引用的文字。参数引用的该类型可以通过预定义分隔符组来指定。在PDL中,由$”foo”(或者等价地,由$’foo’)给出分隔的“替换加引用”参数引用。
使用“替换加引用”参数引用,如果foo被分配值“(”(即,表示左括号字符的1个长度的字符串),那么源表达式
if($“foo”==3.14)
产生目标表达式
If(“(”==3.14)
如果目标语言是DML,那么这是合法语法。
再次,使用该“替换加引用”参数引用,如果foo被分配值“””(即,表示双引号字符的1个长度的字符串),那么源表达式
if($“foo”==3.14)
如果,例如,目标语言是DML,由于DML需要在转义字符(escapecharacter)\后面加上所引用的引号,则产生目标表达式If(“\””==3.14)。如果使用不同的目标语言,那么目标表达式可以使用不同的语法。例如,源表达式
if($“foo”==3.14)
如果目标语言是ksh,则产生目标表达式
If(‘”’==3.14)。
目标语法可以由嵌入在源表达式中的标记符(token)来指示,例如“$-ksh”表示ksh作为目标语言,或者“$-dml”表示DML作为目标语言。一些标记符可以表示没有相应目标语言的目标语法(例如,$-literal),但是仍然具有由一组规则定义的已定义语法。在计算系统110识别用于目标语法的标记符之后,表达式赋值被放在对应于目标语法的“处理模式”中。
“替换加引用”参数引用机制提供了一种方法,用于以通过处理模式确定的,适合目标语法的方式在写入和引用源PDL表达式之后获取目标语法值。在源PDL表达式被写入时已知的目标语法值可以作为与目标语法一致的字面值被保存,通过将其装入到预定的“保护分隔符”(例如,前面没有“$”字符的双引号或单引号)之中。即,源语法不需要在被分隔的字符串中替换。
例如,如果字符串$PI是表示DML目标语言中pi值的特殊字符串,那么该字符串在包含在DML字符序列中时可以被装入双引号内并将原样保留(如“$PI”),而不需要“转义(escape)”直接替换,例如,通过使用“\$PI”。不同目标语言可以使用不同的保护分隔符以保护字符序列,例如,用于ksh目标语言的‘$PI’。在赋值PDL表达式时,计算系统110通过避开保护分隔符内的“直接替换”参数引用和“替换加引用”参数引用来尊重(honor)保护分隔符的使用惯例。计算系统110根据处理模式来确定保护分隔符是什么(如果有的话)。
2.1目标语法处理模式
不同的目标语法处理模式导致用于赋值PDL表达式的不同行为。计算系统110可以通过读取内嵌标志符来识别处理模式;但是,如果没有标志符存在,则可以假设是默认处理模式。下面说明用于四种示例性处理模式的表达式赋值的行为:
目标语法:ksh
标志符:$-ksh
处理模式行为:计算系统110使用与用于“替换加引用”的ksh目标语言一致的引用语法并且识别由ksh目标语言使用的保护分隔符。
目标语法:DML
标志符:$-dml
处理模式行为:计算系统110使用与用于“替换加引用”的DML目标语言一致的引用语法并且识别由DML目标语言使用的保护分隔符。
目标语言:text
标志符:$-text
处理模式行为:计算系统110使用与用于“替换加引用”的DML目标语言一致的引用语法,但是不识别任何分隔符为保护分隔符。
目标语言:literal
标志符:$-literal
处理模式行为:计算系统110不执行“替换加引用”或者“直接替换”的参数绑定(binding)并逐字输出在$-literal标志符和随后标志符之间的全部内容(如果有的话,除了紧跟标志符之后的空格)。
这些内嵌标志符不被翻译为相应的目标表达式。
2.2PDL赋值规则
PDL表达式可以用于提供包含在一组参数分配中的值。PDL表达式的一些部分可以包括操控翻译该PDL表达式的局部值的语句,并且不直接反映在结果目标表达式中。计算系统110使用以下用于解释PDL表达式中的字符的实例规则组。
2.2.1参数分配
源PDL表达式中所引用的参数值可以与PDL表达式(例如,包括一组参数分配的文件)分开分配,或者内嵌PDL表达式(例如,在包括一个或者多个PDL表达式的脚本中)。这种内嵌参数分配不被翻译为相应的目标表达式。确定PDL表达式中所引用的参数的值包括翻译其它PDL表达式和赋值结果目标表达式。
2.2.2直接替换参数引用
“$”字符直接在标志符前而没有引用标志表明“直接替换”参数引用。参数引用被绑定到替换参数引用的值。例如,可以对表达式中的字符序列$BAR赋值以生成字符序列xxx。然后,对表达式中的字符序列FOO$BAR赋值以生成字符序列FOOxxx。
分隔符可以用于对表示将被引用的参数的字符进行分隔。例如,可以使用大括号使得对字符序列FOO${BAR}BAZ赋值以生成字符序列FOOxxxBAZ,而不是解释为FOO$BARBAZ。
2.2.3替换加引用参数引用
在单引号或者双引号的组合中使用以分隔标志符的“$”字符表示“替换加引用”的参数引用。将参数绑定到用于替换所引用的参数的值,并且根据目标语法引用结果字符序列。例如,对表达式中的字符序列$“BAR”或者字符序列$‘BAR’赋值以生成字符序列‘xxx’(用于使用单引号的目标语法,其中如上述实例中BAR被分配值xxx)。同样地,如果执行参数分配TERMINATOR=|,那么对表达式中的字符序列string($“TERMINATOR”)赋值以生成字符序列string(‘|’)。
在另一实例中,目标语法需要所引用的文字字符串中两个反斜线字符“\\”所指定的单个文字反斜线字符“\”。在这种情况下,当执行参数分配TERMINATOR=\时,对表达式中的字符序列string($“TERMINATOR”)赋值以生成字符序列string(‘\\’)。
2.2.4转义(escaping)特定字符
可以使用字符作为前缀在源PDL语法中指定文字“$”字符以“转义”参数替换行为。例如,如果转义字符是反斜线符号,那么对表达式中的字符序列FOO\$BAR赋值以生成字符序列FOO$BAR。
为了在“$”字符之前生成文字“\”,可以使用两个反斜线字符“\\”。例如,对表达式中的字符序列\\$BAR赋值以生成在其中执行直接参数替换的字符序列\xxx。通常,如果在“$”字符前有偶数个“\”,那么“\”字符是成对的并且“$”字符被解释为参数引用。如果在“$”字符前有奇数个“\”,那么相邻“\”字符使得“$”字符按照字面来解释并且任何剩余的“\”字符是成对的。因此,对表达式中的字符序列\\\$BAR赋值以生成字符序列\$BAR,并且对表达式中的字符序列\\\\$BAR赋值以生成字符序列\\xxx。
2.2.5保护分隔符
计算系统110优选通过避开保护分隔符内的“直接替换”参数引用和“替换加引用”参数引用来尊重保护分隔符的使用惯例。例如,为了将字符序列$BAR解释为文字字符串,可以使用保护分隔符,例如,双引号和单引号,以产生受保护的文字字符串:“$BAR”。而且,在所保护的文字字符串内,特定字符的转义不是必要的。
2.2.6内嵌执行
在赋值PDL表达式时,可以执行“内嵌”可执行计算或脚本。使用另一种类型的分隔符来表明该内嵌执行。可执行计算或脚本的名字,例如exec,在表达式中被分隔为$(exec)并且被执行exec的结果(例如,所获得的计算或者脚本的输出)所替代。
内嵌脚本可以包括“透明的”参数引用。参数PARM的透明引用具有以下两种形式中的一种:$PARM或${PARM}。因此,对表达式中的字符序列$(echo$BAR)赋值以生成字符序列xxx。但是,“不透明的”参数引用的其它类型,例如:$(eval echo‘$’FOO)或者$(printenvFOO)并不致使参数被绑定为他们所分配的值。
特殊类型的分隔符可以被用于表明可执行的计算或脚本以特殊语言被执行。例如,$(exec)可以表明根据ksh的exec的执行,以及$[exec]可以表明根据DML的exec的执行。或者,内嵌标志符可以被用于表明以特殊语言的执行。例如,$(ksh exec)可以表明根据ksh的exec的执行,以及$(dml exec)可以表明根据DML的exec的执行。
3参数绑定方法
图3示出在数据仓库130中存储的示例性参数分配136。参数分配136包括参数名称200、参数值202以及可选的,参数属性204。参数属性可以包括任何与参数或者其值有关的信息,例如,数据类型或者描述。在本实例中,分配给参数的值可以包括对任何之前参数的引用,例如具有$FOO值的参数DATE。
参见图4,在示例性参数绑定方法中,计算系统110为了与将被赋值的源脚本302有关的参数在本地存储器120中保持绑定环境300。在计算系统110赋值源脚本302时,计算系统110在绑定环境300中保持在源脚本302中被引用的每个参数的拷贝。存储在绑定环境300中的信息包括参数名称304和该参数的当前值306。根据合适的范围确定规则(scopingrule)为每个参数绑定值。在一些情况下,计算系统110在绑定环境300中保持多个语境(context)以存储具有不同范围的参数。
在本实例中,源脚本302包括第一源表达式310,其包括字符序列“$BASE/file.dml”。该字符序列将字符串值表示为所引用的文字表达式(例如,在DML处理模式下)。计算系统110抑制对在源语法中另外是参数引用$BASE的绑定。然后,保留参数引用$BASE,用于之后被绑定(例如,在对相应目标表达式赋值时,绑定到值~\dir)。
源脚本302包括第二源表达式312,其包括字符序列$“DATE”,该字符序列表示通过“替换加引用”参数引用的字符串值。由于所引用的参数DATE根据另一个参数FOO被定义(在图3中),因此计算系统110首先绑定参数FOO到其所分配的值$TODAY,其转变为
May 1,2000
并且在绑定环境300中存储结果。然后,计算系统110绑定参数DATE到值
May 1,2000
并且在绑定环境300中存储结果。
源脚本302包括第三源表达式314,其包括字符序列$“BAR”,该字符序列表示通过“替换加引用”参数引用的字符串值。计算系统110绑定参数BAR到值
test 1
并且将结果存储在绑定环境300中。
计算系统110生成目标脚本308,其包括第一目标表达式320,该目标表达式在目标语法中表示第一源表达式310。由于在源表达式310中的字符序列“$BASE/file.dml”包括保护分隔符(根据DML处理模式),因此目标表达式320包括相同的字符序列。
目标脚本308包括第二目标表达式322,其中所引用的值“May 1,2000”替换参数引用$“DATA”,和第三目标表达式324,其中所引用的值“test 1”替换参数引用$“BAR”。
计算系统110在源脚本302被扫描用于参数引用并且所引用的值被存储在绑定环境300之后生成目标表达式。或者,计算系统可以在源脚本302被扫描时生成目标表达式。然后,计算系统110能够执行所生成的目标脚本308和/或存储用于之后执行的目标脚本308.
上面描述的表达式赋值技术可以使用在计算机上执行的软件来实现。例如,软件在一个或者多个计算机程序中形成过程,所述计算机程序在一个或者多个已编程或者可编程的计算机系统(可以是各种体系结构,例如分布式、客户端/服务器或者网格(grid))上执行,每个计算机系统包括至少一个处理器、至少一个数据存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备或者端口,以及至少一个输出设备或者端口。软件可以形成更大程序的一个或者多个模块,例如,提供涉及计算机图形的设计和配置的其它服务。图形的节点和元素可以作为存储在计算机可读介质中的数据结构来实现或者作为符合存储在数据仓库中的数据模型的其它组织数据来实现。
该软件可以在介质上被提供,例如,CD-ROM,只要该介质是由普通或者专门的可编程计算机可读的,或者该软件可以通过网络下载(在所传播的信号中被编码)到其被执行的计算机上。在专门的计算机上可以执行全部功能,或者使用专门硬件,例如协处理器。可以以分布的方式实现该软件,其中由软件指定的计算的不同部分可以由不同的计算机执行。每个这种计算机程序,优选地,存储在或者下载到存储介质或者由普通或者专门的可编程计算机可读的设备(例如,固态存储器或介质,或磁介质或光学介质),用于在存储介质或者设备被计算机系统读取时,配置和操作该计算机以执行所述过程。本发明的系统还可以被认为是由配备计算机程序的计算机可读存储介质来实现,其中可以配置存储介质使得计算机系统以特定和预定的方式来操作以执行所述功能。
应该理解的是,上述描述旨在说明但不限制本发明的范围,该范围是附加的权利要求所定义的范围。例如,上述多个功能步骤可以以不同的顺序执行,而不影响整个进程。其它实施例在附加的权利要求的范围内。

Claims (22)

1.一种用于翻译表达式的方法,包括:
接受以一包括一计算系统的计算环境中的第一语法表示的第一表达式,该表达式包括使用该第一语法的引用语法表示引用的字符串值的第一字符序列;
通过所述第一字符序列中包含的标志符来识别表示所述表达式的第二语法,其中所述第二语法用于一目标环境中;以及
通过所述计算系统,以表示所述第一表达式的该第二语法生成第二表达式,包括使用该第一字符序列生成第二字符序列,使得该第二字符序列使用该第二语法表示所述引用的字符串值,
其中所述第一表达式和所述第二表达式包括脚本、程序或者命令行输入中的至少一个的至少一部分。
2.如权利要求1所述的方法,其中所述第一表达式包括多个可执行语句。
3.如权利要求1所述的方法,其中所述第一表达式包括命令行输入。
4.如权利要求1所述的方法,其中所述第一字符序列包括被绑定到所引用的值的参数。
5.如权利要求4所述的方法,其中使用所述第一字符序列生成第二字符序列包括:
绑定该参数到所引用的值;以及
根据所述第二语法的引用语法来生成包括所引用的值的所述第二字符序列。
6.如权利要求4所述的方法,其中所述第一字符序列包括包围该参数的分隔符。
7.如权利要求6所述的方法,其中所述分隔符包括预定前缀,所述预定前缀包括其后带有引用符号的美元符号。
8.如权利要求6所述的方法,其中所述分隔符包括预定后缀,所述预定后缀包括引用符号。
9.如权利要求1所述的方法,其中所述第一字符序列包括包围所述引用的字符串值的表示方式的分隔符。
10.如权利要求9所述的方法,其中所述引用的字符串值包括在该第一语法中用于表明参数引用的字符。
11.如权利要求10所述的方法,其中使用所述第一字符序列生成第二字符序列包括抑制所述引用的字符串值中的参数绑定。
12.如权利要求1所述的方法,其中选择与计算语言兼容的所述第二语法。
13.如权利要求12所述的方法,其中所述计算语言是由ksh、java、DML、C和SQL构成的组合中的一个。
14.如权利要求1所述的方法,其中所述第二语法包括用于解释字符序列的规则。
15.如权利要求1所述的方法,其中识别所述第二语法包括基于在该第一字符序列前的标志符来识别语法。
16.一种用于翻译表达式的计算系统,包括:
用于接受以一包括所述计算系统的计算环境中的第一语法表示的第一表达式的装置,所述表达式包括使用该第一语法的引用语法表示引用的字符串值的第一字符序列;
用于通过所述第一字符序列中包含的标志符来识别表示所述表达式的第二语法的装置,其中所述第二语法用于一目标环境中;以及
用于以表示所述第一表达式的第二语法生成第二表达式,包括使用所述第一字符序列来生成第二字符序列,使得所述第二字符序列使用所述第二语法来表示所述引用的字符串值的装置,
其中所述第一表达式和所述第二表达式包括脚本、程序或者命令行输入中的至少一个的至少一部分。
17.一种用于赋值第一表达式的方法,包括:
接受存储参数定义的一个或者多个数据结构到一计算系统中;
识别在所述第一表达式中引用的一个或者多个参数;
基于所存储的定义确定每个所识别的参数的值;
在绑定环境中保持在源脚本中被引用的每个参数的拷贝;
将所确定的参数值存储在所述计算系统的本地存储器中的所述绑定环境中;以及
通过将所存储的确定的参数值应用于所述第一表达式来基于包含于所述第一表达式中的内嵌标志符从所述第一表达式生成第二表达式,其中所述内嵌标志符用于识别所述第二表达式的语法。
18.如权利要求17所述的方法,其中所述绑定环境存储所识别参数的值以及存储对于赋值所识别参数所必需的参数值,并且该绑定环境不必存储在所述一个或者多个数据结构中存储有其定义的全部参数的值。
19.如权利要求17所述的方法,还包括利用引用的参数来执行所述表达式,所述引用的参数绑定到来自绑定环境的值。
20.如权利要求17所述的方法,其中所述表达式是程序或者脚本的一部分。
21.如权利要求17所述的方法,其中所述表达式包括命令行输入。
22.一种用于赋值表达式的计算系统,包括:
用于接受存储参数定义的一个或者多个数据结构到所述计算系统中的装置;
用于识别在所述表达式中引用的一个或者多个参数的装置;
用于基于所存储的定义来确定每个所识别的参数的值的装置;
用于在绑定环境中保持在源脚本中被引用的每个参数的拷贝的装置;
用于在所述计算系统的本地存储器中的绑定环境中存储所确定的参数值的装置;以及
用于通过将所存储的确定的参数值应用于所述表达式来基于包含于所述表达式中的内嵌标志符从所述表达式生成第二表达式的装置,其中所述内嵌标志符用于识别所述第二表达式的语法。
CN200680023180.9A 2005-06-27 2006-06-27 计算环境中翻译表达式 Active CN101208690B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/169,247 2005-06-27
US11/169,247 US7822615B2 (en) 2005-06-27 2005-06-27 Translating expressions in a computing environment
PCT/US2006/024942 WO2007002652A2 (en) 2005-06-27 2006-06-27 Translating expressions in a computing environment

Publications (2)

Publication Number Publication Date
CN101208690A CN101208690A (zh) 2008-06-25
CN101208690B true CN101208690B (zh) 2016-12-21

Family

ID=37568656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680023180.9A Active CN101208690B (zh) 2005-06-27 2006-06-27 计算环境中翻译表达式

Country Status (8)

Country Link
US (1) US7822615B2 (zh)
EP (2) EP1899859B1 (zh)
JP (3) JP2008547133A (zh)
KR (1) KR101356676B1 (zh)
CN (1) CN101208690B (zh)
AU (1) AU2006261754B2 (zh)
CA (1) CA2612455C (zh)
WO (1) WO2007002652A2 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8521760B2 (en) * 2008-12-30 2013-08-27 Oracle America, Inc. Dynamic translator for requests for system resources
US8856750B2 (en) * 2010-09-28 2014-10-07 International Business Machines Corporation Task-based evaluation of user interfaces
US10255068B2 (en) 2017-03-03 2019-04-09 International Business Machines Corporation Dynamically selecting a memory boundary to be used in performing operations
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10613862B2 (en) 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339435A (en) * 1991-02-28 1994-08-16 Hewlett-Packard Company Heterogenous software configuration management apparatus
CN1228560A (zh) * 1998-01-30 1999-09-15 日本电气株式会社 源代码转换器处理方法及存储该方法的机读媒体
US6681386B1 (en) * 2000-05-22 2004-01-20 International Business Machines Corporation Method, system, and program for parameter expansion, generation, and execution of scripts in a networked environment

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57113147A (en) * 1980-12-31 1982-07-14 Fujitsu Ltd Compiling system for incorporated instruction
US5201042A (en) * 1986-04-30 1993-04-06 Hewlett-Packard Company Software process and tools for development of local language translations of text portions of computer source code
JPS63138425A (ja) * 1986-12-01 1988-06-10 Hitachi Ltd プロフアイルによるjclの自動変換方式
JPS63271636A (ja) * 1987-04-30 1988-11-09 Fujitsu Ltd 言語用マクロプロセツサ
JPH02195438A (ja) * 1989-01-24 1990-08-02 Nec Corp マクロ展開における回帰的呼び出し検出方式
JPH02236732A (ja) * 1989-03-10 1990-09-19 Fujitsu Ltd ソースプログラム作成方式
JPH03282935A (ja) * 1990-03-30 1991-12-13 Pfu Ltd コンパイル処理装置及びコンパイル処理方式
US6400996B1 (en) * 1999-02-01 2002-06-04 Steven M. Hoffberg Adaptive pattern recognition based control system and method
US5701400A (en) * 1995-03-08 1997-12-23 Amado; Carlos Armando Method and apparatus for applying if-then-else rules to data sets in a relational data base and generating from the results of application of said rules a database of diagnostics linked to said data sets to aid executive analysis of financial data
US6006242A (en) * 1996-04-05 1999-12-21 Bankers Systems, Inc. Apparatus and method for dynamically creating a document
US5966072A (en) * 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH1063511A (ja) * 1996-08-14 1998-03-06 Fuji Xerox Co Ltd ジョブスクリプト実行装置
US6088716A (en) * 1997-04-28 2000-07-11 Ab Initio Software Corporation Method for preventing buffer deadlock in dataflow computations
US6173276B1 (en) * 1997-08-21 2001-01-09 Scicomp, Inc. System and method for financial instrument modeling and valuation
US6208345B1 (en) * 1998-04-15 2001-03-27 Adc Telecommunications, Inc. Visual data integration system and method
US6625624B1 (en) * 1999-02-03 2003-09-23 At&T Corp. Information access system and method for archiving web pages
US6538651B1 (en) * 1999-03-19 2003-03-25 John Hayman Parametric geometric element definition and generation system and method
US6816825B1 (en) * 1999-06-18 2004-11-09 Nec Corporation Simulation vector generation from HDL descriptions for observability-enhanced statement coverage
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US20030061207A1 (en) 2001-03-07 2003-03-27 Leonid Spektor Query filter for querying a multitude of databases
KR20030026345A (ko) * 2001-06-19 2003-03-31 코닌클리케 필립스 일렉트로닉스 엔.브이. 데이터의 블럭들을 생성하기 위한 방법, 그 블럭들을처리하기 위한 방법, 이러한 방법들을 사용하는 텔레비전방송 시스템, 및 시스템에서 사용하기 위한 텔레텍스트수신기 장치
US7401086B2 (en) * 2001-11-21 2008-07-15 Enterasys Networks, Inc. Translating configuration files among network devices
JP2003296137A (ja) * 2002-03-29 2003-10-17 Denso Corp 実行履歴記録装置、ラベル置換装置、及びプログラム
US7496892B2 (en) * 2003-05-06 2009-02-24 Andrew Nuss Polymorphic regular expressions
JP2005141393A (ja) * 2003-11-05 2005-06-02 Nippon Telegr & Teleph Corp <Ntt> コンテンツ提供方法及びそのシステム並びにそのコンピュータプログラム及びコンピュータ読み取り可能な情報記録媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339435A (en) * 1991-02-28 1994-08-16 Hewlett-Packard Company Heterogenous software configuration management apparatus
CN1228560A (zh) * 1998-01-30 1999-09-15 日本电气株式会社 源代码转换器处理方法及存储该方法的机读媒体
US6681386B1 (en) * 2000-05-22 2004-01-20 International Business Machines Corporation Method, system, and program for parameter expansion, generation, and execution of scripts in a networked environment

Also Published As

Publication number Publication date
EP2357557A1 (en) 2011-08-17
WO2007002652A2 (en) 2007-01-04
US7822615B2 (en) 2010-10-26
EP1899859A2 (en) 2008-03-19
KR101356676B1 (ko) 2014-01-28
CA2612455C (en) 2015-06-23
JP6162733B2 (ja) 2017-07-12
CN101208690A (zh) 2008-06-25
EP1899859A4 (en) 2008-12-24
KR20080021071A (ko) 2008-03-06
JP2015084256A (ja) 2015-04-30
JP5740349B2 (ja) 2015-06-24
EP1899859B1 (en) 2018-03-21
AU2006261754A1 (en) 2007-01-04
AU2006261754B2 (en) 2013-03-28
CA2612455A1 (en) 2007-01-04
JP2012160214A (ja) 2012-08-23
US20060293875A1 (en) 2006-12-28
JP2008547133A (ja) 2008-12-25
WO2007002652A3 (en) 2007-05-31

Similar Documents

Publication Publication Date Title
CN101208690B (zh) 计算环境中翻译表达式
CN110059009B (zh) 用于测试代码文件的方法和装置
CN102193810B (zh) 模块间内联候选标识
CN109564608A (zh) 对用于应用二进制代码的经更新的版本的目标应用功能的虚拟存储器地址进行更新
JP4638484B2 (ja) データ処理装置におけるデータ整合性
CN110020307A (zh) 一种客户端视图的绘制方法和装置
JP2010507165A (ja) ソースコード内のセキュリティ脆弱性の検出
US20160299831A1 (en) Target Typing-dependent Combinatorial Code Analysis
CN106796525B (zh) 按需加载动态脚本语言代码以减少内存使用
CN107832059A (zh) 一种基于Makefile的代码静态分析方法和装置
US20100299659A1 (en) Attribute based method redirection
CN108733990A (zh) 一种基于区块链的文件保护方法及终端设备
JP2013186647A (ja) 難読化装置、難読化方法、及び難読化プログラム、並びに難読化されたソースコード
Monnier et al. Evolution of emacs lisp
CN104331827B (zh) 交易配置生成方法及交易匹配器
CN112114809B (zh) 一种程序代码安全防护方法、装置及存储介质
CN106484489A (zh) 一种扩展编程语言特性的方法及装置
CN101299191A (zh) 产生用于向用户呈现媒体内容的机器可解译指令集的方法
AU2013203830B2 (en) Translating expressions in a computing environment
CN115543772A (zh) 确定测试用例的方法及装置
CN117492747A (zh) 编译器后端复用方法、装置、编译器及存储介质
Ahmadi An empirical study of Android API use in Google and non-Google applications
CN116126318A (zh) 一种基于插件的开发提效方法
CN118012847A (zh) 基于元模型的数据模型版本管理方法、装置、设备及介质
CN117762559A (zh) 镜像构建方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: ARCHITEKTEN CO., LTD.

Free format text: FORMER OWNER: AB INITIO SOFTWARE CORP.

Effective date: 20100415

Owner name: AB INITIO SOFTWARE CORP.

Free format text: FORMER OWNER: ARCHITEKTEN CO., LTD.

Effective date: 20100415

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

Effective date of registration: 20100415

Address after: Massachusetts, USA

Applicant after: AB INITIO TECHNOLOGY LLC

Address before: Massachusetts, USA

Applicant before: Archie Taco Ltd.

Effective date of registration: 20100415

Address after: Massachusetts, USA

Applicant after: Archie Taco Ltd.

Address before: Massachusetts, USA

Applicant before: Qiyuan Software Co.,Ltd.

C14 Grant of patent or utility model
GR01 Patent grant