JP6162733B2 - コンピュータ環境における式の変換 - Google Patents
コンピュータ環境における式の変換 Download PDFInfo
- Publication number
- JP6162733B2 JP6162733B2 JP2015015507A JP2015015507A JP6162733B2 JP 6162733 B2 JP6162733 B2 JP 6162733B2 JP 2015015507 A JP2015015507 A JP 2015015507A JP 2015015507 A JP2015015507 A JP 2015015507A JP 6162733 B2 JP6162733 B2 JP 6162733B2
- Authority
- JP
- Japan
- Prior art keywords
- expression
- syntax
- parameter
- character sequence
- reference 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
Links
- 230000014509 gene expression Effects 0.000 title claims description 232
- 230000009466 transformation Effects 0.000 title description 6
- 238000013515 script Methods 0.000 claims description 49
- 238000006467 substitution reaction Methods 0.000 claims description 45
- 238000000034 method Methods 0.000 claims description 42
- 238000004590 computer program Methods 0.000 claims description 7
- 230000001131 transforming effect Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 16
- 230000006399 behavior Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Images
Classifications
-
- 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/41—Compilation
- G06F8/44—Encoding
-
- 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/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command 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)
Description
シェルスクリプト言語(例えば、ksh)では、シェルスクリプト内のパラメータは、プレフィックス(例えば、$)を用いて参照される。kshでは、動的環境が、以前に定義されたパラメータの値を維持する。シェルスクリプトを実行するか、またはコマンドラインの式を評価する場合、参照されるパラメータは、動的環境内のパラメータ値にしたがってバインドされる。場合によっては、スクリプト言語でスクリプトを創成する場合、スクリプト言語に適した引用符シンタックスを用いて、リテラル値を維持するようにし、スクリプトを実行する時に引用符付きの式内のパラメータのバインドを無効にすることが有用である。マクロ展開のような、他のメカニズムを用いて、所定の値にパラメータをバインドすることもできる。
一般的な態様では、本発明は式を変換するための方法、ならびに対応するソフトウエアおよびシステムを特徴とする。本方法は、第1シンタックスの第1式を受け取るステップであって、その式は、第1シンタックスを用いて文字列の値を表す第1文字シーケンスを含む;その式を表すための第2シンタックスを特定するステップ;および第2シンタックスで第1式を表す第2式を生成するステップであって、第2文字シーケンスが第2シンタックスを用いた文字列の値を表すように、第1文字シーケンスを用いて第2文字シーケンスを生成するステップを含む;を含む方法である。
第1式は複数の実行可能ステートメントを含む。
第1式はコマンドライン入力を含む。
第1文字シーケンスは参照値へバインドされるパラメータを含む。
第1文字シーケンスを用いて第2文字シーケンスを生成するステップは、パラメータを参照値へバインドするステップ;および第2シンタックスの引用符シンタックスに基づいて参照値を含めるよう第2文字シーケンスを生成するステップ;を含む。
第1文字シーケンスはパラメータを囲む区切り文字を含む。
区切り文字は、引用符シンボルがそのあとに続くドルシンボルを含む所定のプレフィックスを含む。
区切り文字は引用符シンボルを含む所定のサフィックスを含む。
第1文字シーケンスは文字列の値の表現を囲む区切り文字を含む。
文字列の値は、パラメータ参照を示す、第1シンタックスで用いられる文字を含む。
第1文字シーケンスを用いて第2文字シーケンスを生成するステップは、文字列の値内のパラメータのバインドを無効にするステップを含む。
第2シンタックスは、ksh、Java(登録商標)、DML、C、またはSQL等の計算機言語と互換性をもつよう選定される。
第2シンタックスは、文字シーケンスを解釈するための規則を含む。
第2シンタックスを特定するステップは、第1文字シーケンスに先行するトークンに基づいてシンタックスを特定するステップを含む。
バインド環境は、特定したパラメータの値、および特定したパラメータを評価するのに必要なパラメータの値を格納するが、一つ以上のデータ構造内にその定義を格納するパラメータ全ての値を格納するとは限らない。
本方法は、参照パラメータをバインド環境からの値へバインドさせた状態で、式を実行するステップを更に含む。
式はプログラムまたはスクリプトの一部である。
式はコマンドライン入力を含む。
データ処理環境に、データ変換またはレコードフォーマットの定義(例えば、データ操作言語で記述された)等のメタデータを含めることができる。ランタイム時に取得されるリテラル値で定義できる動的メタデータを有することが有用である。特定したシンタックスに基づいてターゲットの式を変換すると、リテラル値を取得できるだけでなく、特定したシンタックスに適した方法でリテラル値を引用できるようになる。更に、特定したシンタックスに対する引用規則を順守することにより、ターゲットの式の評価に際して、幾つかのリテラル値を維持することができる。
1 概要
図1を参照すると、コンピュータ環境100は、ソースシンタックスを用いて、ソース計算式102の仕様(例えば、スクリプト、プログラム、パス名等)をサポートし、次いで、そのソース式102を、幾つかの可能性のあるターゲット環境の内の一つにおける評価(例えば、実行、拡張等)に適したターゲットシンタックスを用いるターゲット式104へ変換する。コンピュータ環境100は、シェル環境またはコンピュータープログラミング言語環境等の、ターゲット式104を評価する特定のターゲット環境108を特定するためのプロセス106を含む。プロセス106は、ターゲット式104内の情報に基づくか、他のユーザ入力に基づくか、または既定の環境に基づいてターゲット環境を特定することができる。
ソースシンタックスからターゲットシンタックスへの式の変換は、変換時に既知のパラメータ値を用いるパラメータ代入を伴うことがある。ソースのPDLシンタックスは、幾つかの「$代入」シンタックスを用いてパラメータを値で置換する。
'the price is $12.00'
if($foo==3.14)
次のターゲット式が得られる。
if(1.00==3.14)
この場合、$文字をプレフィックスとして用いて、パラメータfooへ割り当てられている値を、直接代入パラメータ参照$fooに代入すべきであることを指示する。
if((==3.14)
これは、ターゲット言語がDMLの場合、ターゲットシンタックスで不当な式となる。
if("$foo"==3.14)
このソース式に同一パラメータを代入すると、次の正当なターゲット式が得られる。
if("("==3.14)
(コンピュータシステム110が、後述するように、二重引用符が保護区切り文字である処理モードにないと仮定する)。
if("""==3.14)
これは、ターゲット言語がDMLの場合、不当なシンタックスである。
if($"foo"==3.14)
により、次のターゲット式を得る。
if("("==3.14)
これはターゲット言語がDMLの場合、正当なシンタックスである。
if($"foo"==3.14)
により、例えば、ターゲット言語がDMLの場合、次のターゲット式を得る。
if("\""==3.14)
これは、DMLでは、引用符付きの引用符号にエスケープ文字\が先行する必要があるからである。異なるターゲット言語を用いる場合、ターゲット式は異なるシンタックスを用いることができる。例えば、次のソース式、
if($"foo"==3.14)
により、ターゲット言語がkshの場合、次のターゲット式を得る。
if('"'==3.14)
異なるターゲットシンタックス処理モードは、PDLの式を評価するための異なる振る舞いを生み出す。コンピュータシステム110は組み込まれたトークンを読むことにより処理モードを認識できるが、しかし、トークンがない場合は、既定値の処理モードを仮定することができる。4つの例示の処理モードの式評価の振る舞いを下記のようにまとめる:
トークン:$-ksh
処理モード振る舞い:コンピュータシステム110は、「代入および引用」に対するkshのターゲット言語と整合性がある引用符付きシンタックスを用いて、kshのターゲット言語が用いる保護区切り文字を認識する。
トークン:$-dml
処理モード振る舞い:コンピュータシステム110は、「代入および引用」に対するDMLのターゲット言語と整合性がある引用符付きシンタックスを用いて、DMLのターゲット言語が用いる保護区切り文字を認識する。
トークン:$-text
処理モード振る舞い:コンピュータシステム110は、「代入および引用」に対するDMLのターゲット言語と整合性がある引用符付きシンタックスを用いるが、どの区切り文字も保護区切り文字として認識しない。
トークン:$-literal
処理モード振る舞い:コンピュータシステム110は、「代入および引用」または「直接代入」パラメーターバインドを実行せず、$-literalトークンと、もしあれば、続くトークンとの間の全て(トークン直後のスペースを除く)を逐語的に出力する。
PDLの式を用いて、パラメータ割り当てセット内に含まれる値を提供することができる。PDLの式の幾つかの部分は、PDLの式の変換に対してローカルの値を操作するステートメントを含むことができ、得られるターゲット式に直接反映されない。コンピュータシステム110は、PDL式内の文字を解釈する下記の例示の規則セットを用いる。
ソースのPDLの式で参照されるパラメータ値は、PDLの式とは別に割り当てることができ(例えば、一セットのパラメータ割り当てを含むファイル内で)、またはPDLの式とインラインで割り当てることができる(例えば、一つ以上のPDLの式を含むスクリプト内で)。このようなインラインパラメータ割り当ては、対応するターゲットの式へ変換されない。PDLの式で参照されるパラメータの値を決定するステップは、他のPDLの式を変換するステップ、および得られるターゲット式を評価するステップを含むことができる。
引用符なしでトークンに直接先行する「$」文字は、「直接代入」パラメータ参照を指示する。パラメータ参照は、パラメータ参照に代入される値とバインドされる。例えば、式中の文字シーケンス$BARが、文字シーケンスxxxを生成するよう評価されるとする。その場合、式中の文字シーケンスFOO$BARは、文字シーケンスFOOxxxを生成するよう評価されることになる。
一重または二重の引用符と組み合わせて用いてトークンを区切る「$」文字は、「代入および引用」パラメータ参照を指示する。パラメータは、参照されるパラメータに代入される値にバインドされ、得られる文字シーケンスは、ターゲットシンタックスに基づいて引用される。例えば、式の文字シーケンス$"BAR"または文字シーケンス$'BAR'は、評価されて文字シーケンス'xxx'を生成する(一重引用符を用いるターゲットシンタックスについて、上記例示のようにBARに値xxxが割り当てられる場合)。同様に、パラメータ割り当てをTERMINATOR=|とした場合、式中の文字シーケンスstring($"TERMINATOR")が評価されて、文字シーケンスstring('|')が生成される。
リテラル「$」文字は、文字をプレフィックスとして用いてパラメータ代入の振る舞いを「エスケープ」することにより、ソースPDLシンタックスで規定することができる。例えば、エスケープ文字がバックスラッシュの場合、式内の文字シーケンスFOO\$BARが評価されて文字シーケンスFOO$BARが生成される。
コンピュータシステム110は、保護区切り文字内側の「直接代入」パラメータ参照および「代入および引用」パラメータ参照をともにOFFにすることにより、保護区切り文字を順守することが好ましい。例えば、文字シーケンス$BARをリテラル文字として解釈するために、二重または一重引用符等の保護区切り文字を用いて、保護されたリテラル文字列"$BAR"を得ることができる。更に、特殊文字のエスケープは、保護されたリテラル文字列内側では不要である。
「インライン」で実行可能な計算またはスクリプトを、PDLの式を評価しながら実行することができる。このインライン実行は、別の種類の区切り文字を用いて示す。実行可能な計算またはスクリプトの名称、例えば、execを、式の中で$(exec)として区切り、execを実行した結果(例えば、計算またはスクリプトの出力を取得したもの)で置換する。
図3は、データ収納庫130内に格納される例示のパラメータ割り当て136を示す。パラメータ割り当て136は、パラメータ名称200、パラメータ値202、およびオプションで、パラメータ属性204を含む。パラメータ属性は、データ種類または記述等の、パラメータまたはその値と関係付けられる何らかの情報を含むことができる。本実施例では、パラメータに割り当てられた値は、$FOOの値を有するパラメータDATE等の、何らかの先行するパラメータへの参照を含むことができる。
May 1, 2000
と解決し、バインド環境300にその結果を格納する。次いで、コンピュータシステム110は、次の値へパラメータDATEをバインドし、
May 1, 2000
バインド環境300にその結果を格納する。
test 1
バインド環境300にその結果を格納する。
Claims (63)
- コンピュータを用いて式を変換するための方法であって、前記コンピュータのプロセッサによって実行される、
第1シンタックスの第1式を受け取るステップであって、前記第1式は、第1参照値が割り当てられる第1パラメータを含む第1文字シーケンスを含み、前記第1文字シーケンスは、前記第1シンタックスの、代入および引用パラメータ参照を用いる第1種の代入シンタックスを用いる、受け取るステップと、
前記第1シンタックスの第3式を受け取るステップであって、前記第3式は、第3参照値が割り当てられる第3パラメータを含む第3文字シーケンスを含み、前記第3文字シーケンスは、前記第1シンタックスの、直接代入パラメータ参照を用いる第2種の代入シンタックスを用い、前記第2種の代入シンタックスは、前記第1種の代入シンタックスと異なる、受け取るステップと、
前記第1文字シーケンスに先行する前記第1式内のトークンおよび前記第3文字シーケンスに先行する第3式内のトークンに基づいて前記第1式および第3式を表すための第2シンタックスを特定するステップと、
前記第1式を表す前記第2シンタックスで第2式を生成するステップであって、前記第1文字シーケンスを用いて第2文字シーケンスを生成し、前記第2文字シーケンスが前記第2シンタックスの引用符シンタックスに基づいて引用される前記第1参照値を含むようにすることを含み、前記第2シンタックスは前記第1シンタックスとは異なり、前記第1式は前記第1パラメータを囲む第1引用符シンボルを含み、前記第2式は前記第1参照値を囲む第2引用符シンボルを含み、前記第2引用符シンボルは前記第1引用符シンボルとは異なる、生成するステップと、
前記第3式を表す前記第2シンタックスで第4式を生成するステップであって、前記第3文字シーケンスを用いて第4文字シーケンスを生成し、前記第4文字シーケンスが前記第3パラメータに直接代入される前記第3参照値を含むようにすることを含む、生成するステップと、を含む、
方法。 - 前記第1式は、複数の実行可能ステートメントを含む、請求項1の方法。
- 前記第1式は、コマンドライン入力を含む、請求項1の方法。
- 前記第1パラメータは、前記第1参照値へバインドされる、請求項1の方法。
- 前記第1文字シーケンスを用いて第2文字シーケンスを生成することは、
前記第1パラメータを前記第1参照値へバインドすることを含む、
請求項4の方法。 - 前記第1文字シーケンスは、前記パラメータを囲む区切り文字を含む、請求項4の方法。
- 前記区切り文字は、引用符シンボルがそのあとに続くドルシンボルを含む所定のプレフィックスを含む、請求項6の方法。
- 前記区切り文字は、引用符シンボルを含む所定のサフィックスを含む、請求項6の方法。
- 前記第1文字シーケンスは、文字列の値の表現を囲む区切り文字を含む、請求項1の方法。
- 前記文字列の値は、パラメータ参照を示す、前記第1シンタックスで用いられる文字を含む、請求項9の方法。
- 前記第1文字シーケンスを用いて第2文字シーケンスを生成することは、前記文字列の値内のパラメータのバインドを無効にすることを含む、請求項10の方法。
- 前記第2シンタックスは、計算機言語と互換性をもつよう選定される、請求項1の方法。
- 前記計算機言語は、ksh、Java(登録商標)、DML、C、およびSQLから成るグループのメンバーである、請求項12の方法。
- 前記第2シンタックスは、文字シーケンスを解釈するための規則を含む、請求項1の方法。
- 式を変換するための方法を行うためのコンピュータプログラムが記録されるコンピュータ可読媒体であって、
前記コンピュータプログラムは、コンピュータシステムに、
第1シンタックスの第1式を受け取るステップであって、前記第1式は、第1参照値が割り当てられる第1パラメータを含む第1文字シーケンスを含み、前記第1文字シーケンスは、前記第1シンタックスの、代入および引用パラメータ参照を用いる第1種の代入シンタックスを用いる、受け取るステップと、
前記第1シンタックスの第3式を受け取るステップであって、前記第3式は、第3参照値が割り当てられる第3パラメータを含む第3文字シーケンスを含み、前記第3文字シーケンスは、前記第1シンタックスの、直接代入パラメータ参照を用いる第2種の代入シンタックスを用い、前記第2種の代入シンタックスは、前記第1種の代入シンタックスと異なる、受け取るステップと、
前記第1文字シーケンスに先行する前記第1式内のトークンおよび前記第3文字シーケンスに先行する第3式内のトークンに基づいて前記第1式および第3式を表すための第2シンタックスを特定するステップと、
前記第1式を表す前記第2シンタックスで第2式を生成するステップであって、前記第1文字シーケンスを用いて第2文字シーケンスを生成し、前記第2文字シーケンスが前記第2シンタックスの引用符シンタックスに基づいて引用される前記第1参照値を含むようにすることを含み、前記第2シンタックスは前記第1シンタックスとは異なり、前記第1式は前記第1パラメータを囲む第1引用符シンボルを含み、前記第2式は前記第1参照値を囲む第2引用符シンボルを含み、前記第2引用符シンボルは前記第1引用符シンボルとは異なる、生成するステップと、
前記第3式を表す前記第2シンタックスで第4式を生成するステップであって、前記第3文字シーケンスを用いて第4文字シーケンスを生成し、前記第4文字シーケンスが前記第3パラメータに直接代入される前記第3参照値を含むようにすることを含む、生成するステップと、
を実行させるための命令を含む、
コンピュータ可読媒体。 - 式を変換するためのシステムであって、
第1シンタックスの第1式を受け取る手段であって、前記第1式は、第1参照値が割り当てられる第1パラメータを含む第1文字シーケンスを含み、前記第1文字シーケンスは、前記第1シンタックスの、代入および引用パラメータ参照を用いる第1種の代入シンタックスを用いる、受け取る手段と、
前記第1シンタックスの第3式を受け取る手段であって、前記第3式は、第3参照値が割り当てられる第3パラメータを含む第3文字シーケンスを含み、前記第3文字シーケンスは、前記第1シンタックスの、直接代入パラメータ参照を用いる第2種の代入シンタックスを用い、前記第2種の代入シンタックスは、前記第1種の代入シンタックスと異なる、受け取る手段と、
前記第1文字シーケンスに先行する前記第1式内のトークンおよび前記第3文字シーケンスに先行する第3式内のトークンに基づいて前記第1式および第3式を表すための第2シンタックスを特定する手段と、
前記第1式を表す前記第2シンタックスで第2式を生成する手段であって、前記第1文字シーケンスを用いて第2文字シーケンスを生成し、前記第2文字シーケンスが前記第2シンタックスの引用符シンタックスに基づいて引用される前記第1参照値を含むようにすることを含み、前記第2シンタックスは前記第1シンタックスとは異なり、前記第1式は前記第1パラメータを囲む第1引用符シンボルを含み、前記第2式は前記第1参照値を囲む第2引用符シンボルを含み、前記第2引用符シンボルは前記第1引用符シンボルとは異なる、生成する手段と、
前記第3式を表す前記第2シンタックスで第4式を生成する手段であって、前記第3文字シーケンスを用いて第4文字シーケンスを生成し、前記第4文字シーケンスが前記第3パラメータに直接代入される前記第3参照値を含むようにすることを含む、生成する手段と、を含む、
システム。 - 式を評価するための方法であって、
パラメータ定義を格納する一つ以上のデータ構造を受け取るステップと、
第1シンタックスに従ってソース式を含むソーススクリプトを評価するステップであって、前記ソース式は、第1ソース式および第2ソース式を含み、前記第1ソース式は、前記第1シンタックスの、代入および引用パラメータ参照を用いる第1種の代入シンタックスを用い、前記第1ソース式は、区切り文字で囲まれた第1パラメータを含み、前記第2ソース式は、前記第1シンタックスの、直接代入パラメータ参照を用いる第2種の代入シンタックスを用い、前記第2ソース式は、区切り文字で囲まれた第2パラメータを含み、
前記ソース式で参照されるパラメータを特定するステップと、
格納された定義に基づいて前記特定したパラメータそれぞれの値を決定するステップであって、前記第1パラメータの第1参照値および前記第2パラメータの第2参照値を決定することを含む決定するステップと、を含む、評価するステップと、
バインド環境内に前記決定したパラメータ値を格納するステップであって、前記バインド環境内に前記第1参照値および第2参照値を格納することを含む、格納するステップと、
第2シンタックスに基づいて前記ソーススクリプトを、ターゲット式を含むターゲットスクリプトに変換するステップであって、
前記第1参照値が前記第1パラメータに代入され、かつ前記第2シンタックスの引用符シンタックスに基づいて引用される前記第1ソース式に基づいて第1ターゲット式を生成するステップと、
前記第2参照値が前記第2パラメータに直接代入される前記第2ソース式に基づいて第2ターゲット式を生成するステップと、を含む、変換するステップと、を含み、
前記バインド環境は、前記特定したパラメータの値、および前記特定したパラメータを評価するのに必要なパラメータの値を格納し、前記バインド環境は、前記一つ以上のデータ構造内にその定義を格納するが前記特定したパラメータを評価するのに必要でないパラメータの値を格納しない、
方法。 - 参照パラメータを前記バインド環境からの値へバインドさせた状態で、前記ターゲット式を実行するステップを更に含む、請求項17の方法。
- 前記ターゲット式はプログラムまたはスクリプトの一部である、請求項17の方法。
- 前記式の一つ以上はコマンドライン入力を含む、請求項17の方法。
- 式を評価するための方法を行うためのコンピュータプログラムが記録されるコンピュータ可読媒体であって、
前記コンピュータプログラムは、コンピュータシステムに、
パラメータ定義を格納する一つ以上のデータ構造を受け取るステップと、
第1シンタックスに従ってソース式を含むソーススクリプトを評価するステップであって、前記ソース式は、第1ソース式および第2ソース式を含み、前記第1ソース式は、前記第1シンタックスの、代入および引用パラメータ参照を用いる第1種の代入シンタックスを用い、前記第1ソース式は、区切り文字で囲まれた第1パラメータを含み、前記第2ソース式は、前記第1シンタックスの、直接代入パラメータ参照を用いる第2種の代入シンタックスを用い、前記第2ソース式は、区切り文字で囲まれた第2パラメータを含み、
前記ソース式で参照されるパラメータを特定するステップと、
格納された定義に基づいて前記特定したパラメータそれぞれの値を決定するステップであって、前記第1パラメータの第1参照値および前記第2パラメータの第2参照値を決定し、かつ前記一つ以上のデータ構造にあるが前記ソーススクリプトにないパラメータの値を決定しないことを含む決定するステップと、を含む、評価するステップと、
バインド環境内に前記決定したパラメータ値を格納するステップであって、前記バインド環境内に前記第1参照値および第2参照値を格納することを含む、格納するステップと、
第2シンタックスに基づいて前記ソーススクリプトを、ターゲット式を含むターゲットスクリプトに変換するステップであって、
前記第1参照値が前記第1パラメータに代入され、かつ前記第2シンタックスの引用符シンタックスに基づいて引用される前記第1ソース式に基づいて第1ターゲット式を生成するステップと、
前記第2参照値が前記第2パラメータに直接代入される前記第2ソース式に基づいて第2ターゲット式を生成するステップと、を含む、変換するステップと、
を実行させるための命令を含み、
前記バインド環境は、前記特定したパラメータの値、および前記特定したパラメータを評価するのに必要なパラメータの値を格納し、前記バインド環境は、前記一つ以上のデータ構造内にその定義を格納するが前記特定したパラメータを評価するのに必要でないパラメータの値を格納しない、
コンピュータ可読媒体。 - 式を評価するためのシステムであって、
パラメータ定義を格納する一つ以上のデータ構造を受け取る手段と、
第1シンタックスに従ってソース式を含むソーススクリプトを評価する手段であって、前記ソース式は、第1ソース式および第2ソース式を含み、前記第1ソース式は、前記第1シンタックスの、代入および引用パラメータ参照を用いる第1種の代入シンタックスを用い、前記第1ソース式は、区切り文字で囲まれた第1パラメータを含み、前記第2ソース式は、前記第1シンタックスの、直接代入パラメータ参照を用いる第2種の代入シンタックスを用い、前記第2ソース式は、区切り文字で囲まれた第2パラメータを含み、
前記ソース式で参照されるパラメータを特定する手段と、
格納された定義に基づいて前記特定したパラメータそれぞれの値を決定する手段であって、前記第1パラメータの第1参照値および前記第2パラメータの第2参照値を決定し、かつ前記一つ以上のデータ構造にあるが前記ソーススクリプトにないパラメータの値を決定しないことを含む決定する手段と、を含む、評価する手段と、
バインド環境内に前記決定したパラメータ値を格納する手段であって、前記バインド環境内に前記第1参照値および第2参照値を格納することを含む、格納する手段と、
第2シンタックスに基づいて前記ソーススクリプトを、ターゲット式を含むターゲットスクリプトに変換する手段であって、
前記第1参照値が前記第1パラメータに代入され、かつ前記第2シンタックスの引用符シンタックスに基づいて引用される前記第1ソース式に基づいて第1ターゲット式を生成する手段と、
前記第2参照値が前記第2パラメータに直接代入される前記第2ソース式に基づいて第2ターゲット式を生成する手段と、を含む、変換する手段と、を含み、
前記バインド環境は、前記特定したパラメータの値、および前記特定したパラメータを評価するのに必要なパラメータの値を格納し、前記バインド環境は、前記一つ以上のデータ構造内にその定義を格納するが前記特定したパラメータを評価するのに必要でないパラメータの値を格納しない、
システム。 - 前記第1式は、複数の実行可能ステートメントを含む、請求項15のコンピュータ可読媒体。
- 前記第1式は、コマンドライン入力を含む、請求項15のコンピュータ可読媒体。
- 前記第1パラメータは、前記第1参照値へバインドされる、請求項15のコンピュータ可読媒体。
- 前記第1文字シーケンスを用いて第2文字シーケンスを生成することは、
前記第1パラメータを前記第1参照値へバインドすることを含む、
請求項25のコンピュータ可読媒体。 - 前記第1文字シーケンスは、前記パラメータを囲む区切り文字を含む、請求項25のコンピュータ可読媒体。
- 前記区切り文字は、引用符シンボルがそのあとに続くドルシンボルを含む所定のプレフィックスを含む、請求項27のコンピュータ可読媒体。
- 前記区切り文字は、引用符シンボルを含む所定のサフィックスを含む、請求項27のコンピュータ可読媒体。
- 前記第1文字シーケンスは、文字列の値の表現を囲む区切り文字を含む、請求項15のコンピュータ可読媒体。
- 前記文字列の値は、パラメータ参照を示す、前記第1シンタックスで用いられる文字を含む、請求項30のコンピュータ可読媒体。
- 前記第1文字シーケンスを用いて第2文字シーケンスを生成することは、前記文字列の値内のパラメータのバインドを無効にすることを含む、請求項31のコンピュータ可読媒体。
- 前記第2シンタックスは、計算機言語と互換性をもつよう選定される、請求項15のコンピュータ可読媒体。
- 前記計算機言語は、ksh、Java(登録商標)、DML、C、およびSQLから成るグループのメンバーである、請求項33のコンピュータ可読媒体。
- 前記第2シンタックスは、文字シーケンスを解釈するための規則を含む、請求項15のコンピュータ可読媒体。
- 前記第1式は、複数の実行可能ステートメントを含む、請求項16のシステム。
- 前記第1式は、コマンドライン入力を含む、請求項16のシステム。
- 前記第1パラメータは、前記第1参照値へバインドされる、請求項16のシステム。
- 前記第1文字シーケンスを用いて第2文字シーケンスを生成することは、
前記第1パラメータを前記第1参照値へバインドすることを含む、
請求項38のシステム。 - 前記第1文字シーケンスは、前記パラメータを囲む区切り文字を含む、請求項38のシステム。
- 前記区切り文字は、引用符シンボルがそのあとに続くドルシンボルを含む所定のプレフィックスを含む、請求項40のシステム。
- 前記区切り文字は、引用符シンボルを含む所定のサフィックスを含む、請求項40のシステム。
- 前記第1文字シーケンスは、文字列の値の表現を囲む区切り文字を含む、請求項16のシステム。
- 前記文字列の値は、パラメータ参照を示す、前記第1シンタックスで用いられる文字を含む、請求項43のシステム。
- 前記第1文字シーケンスを用いて第2文字シーケンスを生成することは、前記文字列の値内のパラメータのバインドを無効にすることを含む、請求項44のシステム。
- 前記第2シンタックスは、計算機言語と互換性をもつよう選定される、請求項16のシステム。
- 前記計算機言語は、ksh、Java(登録商標)、DML、C、およびSQLから成るグループのメンバーである、請求項46のシステム。
- 前記第2シンタックスは、文字シーケンスを解釈するための規則を含む、請求項16のシステム。
- 前記ソース式で参照されるパラメータを特定するステップは、前記格納された定義で参照される一つ以上のパラメータを特定することを含む、請求項17の方法。
- 前記コンピュータプログラムは、前記コンピュータシステムに、参照パラメータを前記バインド環境からの値へバインドさせた状態で、前記ターゲット式を実行するステップを実行させるための命令を更に含む、請求項21のコンピュータ可読媒体。
- 前記ターゲット式はプログラムまたはスクリプトの一部である、請求項21のコンピュータ可読媒体。
- 前記式の一つ以上はコマンドライン入力を含む、請求項21のコンピュータ可読媒体。
- 前記ソース式で参照されるパラメータを特定するステップは、前記格納された定義で参照される一つ以上のパラメータを特定することを含む、請求項21のコンピュータ可読媒体。
- 参照パラメータを前記バインド環境からの値へバインドさせた状態で、前記ターゲット式を実行する手段を更に含む、請求項22のシステム。
- 前記ターゲット式はプログラムまたはスクリプトの一部である、請求項22のシステム。
- 前記式の一つ以上はコマンドライン入力を含む、請求項22のシステム。
- 前記ソース式で参照されるパラメータを特定する手段は、前記格納された定義で参照される一つ以上のパラメータを特定することを含む、請求項22のシステム。
- 前記第2シンタックスの前記引用符シンタックスに基づき前記第1参照値を引用することは、前記区切り文字で囲まれた前記第1参照値を含む式とは異なる式を生成することを含む、請求項17記載の方法。
- 前記第2シンタックスの前記引用符シンタックスに基づき前記第1参照値を引用することは、前記区切り文字で囲まれた前記第1参照値を含む式とは異なる式を生成することを含む、請求項21記載のコンピュータ可読媒体。
- 前記第2シンタックスの前記引用符シンタックスに基づき前記第1参照値を引用することは、前記区切り文字で囲まれた前記第1参照値を含む式とは異なる式を生成することを含む、請求項22記載のシステム。
- 前記第1文字シーケンスは、区切り文字に囲まれた前記第1パラメータを含み、前記第2シンタックスの前記引用符シンタックスに基づき前記第1参照値を引用することは、前記区切り文字で囲まれた前記第1参照値を含む式とは異なる式を生成することを含む、請求項1記載の方法。
- 前記第1文字シーケンスは、区切り文字に囲まれた前記第1パラメータを含み、前記第2シンタックスの前記引用符シンタックスに基づき前記第1参照値を引用することは、前記区切り文字で囲まれた前記第1参照値を含む式とは異なる式を生成することを含む、請求項15記載のコンピュータ可読媒体。
- 前記第1文字シーケンスは、区切り文字に囲まれた前記第1パラメータを含み、前記第2シンタックスの前記引用符シンタックスに基づき前記第1参照値を引用することは、前記区切り文字で囲まれた前記第1参照値を含む式とは異なる式を生成することを含む、請求項16記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/169,247 US7822615B2 (en) | 2005-06-27 | 2005-06-27 | Translating expressions in a computing environment |
US11/169,247 | 2005-06-27 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012121089A Division JP5740349B2 (ja) | 2005-06-27 | 2012-05-28 | コンピュータ環境における式の変換 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015084256A JP2015084256A (ja) | 2015-04-30 |
JP2015084256A5 JP2015084256A5 (ja) | 2015-06-18 |
JP6162733B2 true JP6162733B2 (ja) | 2017-07-12 |
Family
ID=37568656
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008519475A Pending JP2008547133A (ja) | 2005-06-27 | 2006-06-27 | コンピュータ環境における式の変換 |
JP2012121089A Active JP5740349B2 (ja) | 2005-06-27 | 2012-05-28 | コンピュータ環境における式の変換 |
JP2015015507A Active JP6162733B2 (ja) | 2005-06-27 | 2015-01-29 | コンピュータ環境における式の変換 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008519475A Pending JP2008547133A (ja) | 2005-06-27 | 2006-06-27 | コンピュータ環境における式の変換 |
JP2012121089A Active JP5740349B2 (ja) | 2005-06-27 | 2012-05-28 | コンピュータ環境における式の変換 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7822615B2 (ja) |
EP (2) | EP2357557A1 (ja) |
JP (3) | JP2008547133A (ja) |
KR (1) | KR101356676B1 (ja) |
CN (1) | CN101208690B (ja) |
AU (1) | AU2006261754B2 (ja) |
CA (1) | CA2612455C (ja) |
WO (1) | WO2007002652A2 (ja) |
Families Citing this family (9)
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 |
US10620956B2 (en) | 2017-03-03 | 2020-04-14 | International Business Machines Corporation | Search string processing via inline decode-based micro-operations expansion |
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 |
US10789069B2 (en) | 2017-03-03 | 2020-09-29 | International Business Machines Corporation | Dynamically selecting version of instruction to be executed |
US10255068B2 (en) | 2017-03-03 | 2019-04-09 | International Business Machines Corporation | Dynamically selecting a memory boundary to be used in performing operations |
US10324716B2 (en) | 2017-03-03 | 2019-06-18 | International Business Machines Corporation | Selecting processing based on expected value of selected character |
US10613862B2 (en) | 2017-03-03 | 2020-04-07 | International Business Machines Corporation | String sequence operations with arbitrary terminators |
Family Cites Families (28)
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 | コンパイル処理装置及びコンパイル処理方式 |
EP0501613A3 (en) | 1991-02-28 | 1993-09-01 | Hewlett-Packard Company | Heterogeneous software configuration management apparatus |
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 |
JP3110367B2 (ja) * | 1998-01-30 | 2000-11-20 | 日本電気アイシーマイコンシステム株式会社 | ソースコンバータの処理方法及びソースコンバータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
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 |
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 |
US7164422B1 (en) | 2000-07-28 | 2007-01-16 | Ab Initio Software Corporation | Parameterized graphs with conditional components |
CA2364645A1 (en) | 2001-03-07 | 2002-09-07 | Spektor Leonid | Query filter for querying a multitude of databases |
EP1402728A1 (en) * | 2001-06-19 | 2004-03-31 | Koninklijke Philips Electronics N.V. | Method for generatng blocks of data, method for processing of the same, television broadcasting system employing such methods, and teletext receiver arrangement for use in the system |
AU2002366158A1 (en) * | 2001-11-21 | 2003-06-10 | 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> | コンテンツ提供方法及びそのシステム並びにそのコンピュータプログラム及びコンピュータ読み取り可能な情報記録媒体 |
-
2005
- 2005-06-27 US US11/169,247 patent/US7822615B2/en active Active
-
2006
- 2006-06-27 CN CN200680023180.9A patent/CN101208690B/zh active Active
- 2006-06-27 JP JP2008519475A patent/JP2008547133A/ja active Pending
- 2006-06-27 CA CA2612455A patent/CA2612455C/en active Active
- 2006-06-27 KR KR1020077030526A patent/KR101356676B1/ko active IP Right Grant
- 2006-06-27 EP EP11154883A patent/EP2357557A1/en not_active Ceased
- 2006-06-27 AU AU2006261754A patent/AU2006261754B2/en active Active
- 2006-06-27 WO PCT/US2006/024942 patent/WO2007002652A2/en active Application Filing
- 2006-06-27 EP EP06785626.0A patent/EP1899859B1/en active Active
-
2012
- 2012-05-28 JP JP2012121089A patent/JP5740349B2/ja active Active
-
2015
- 2015-01-29 JP JP2015015507A patent/JP6162733B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
WO2007002652A3 (en) | 2007-05-31 |
CN101208690B (zh) | 2016-12-21 |
JP2008547133A (ja) | 2008-12-25 |
EP1899859B1 (en) | 2018-03-21 |
KR20080021071A (ko) | 2008-03-06 |
AU2006261754A1 (en) | 2007-01-04 |
EP2357557A1 (en) | 2011-08-17 |
JP2012160214A (ja) | 2012-08-23 |
US7822615B2 (en) | 2010-10-26 |
EP1899859A2 (en) | 2008-03-19 |
WO2007002652A2 (en) | 2007-01-04 |
EP1899859A4 (en) | 2008-12-24 |
CN101208690A (zh) | 2008-06-25 |
US20060293875A1 (en) | 2006-12-28 |
AU2006261754B2 (en) | 2013-03-28 |
CA2612455A1 (en) | 2007-01-04 |
CA2612455C (en) | 2015-06-23 |
KR101356676B1 (ko) | 2014-01-28 |
JP2015084256A (ja) | 2015-04-30 |
JP5740349B2 (ja) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6162733B2 (ja) | コンピュータ環境における式の変換 | |
JP5042315B2 (ja) | ソースコード内のセキュリティ脆弱性の検出 | |
KR101099212B1 (ko) | 예외 처리 구조물들을 포함하는 소프트웨어의 소스 언어 독립형 중간 표현을 처리하는 방법, 다수의 소스 코드 언어들에 대한 소스 언어 독립형 예외 처리 중간 표현들을 구현하기 위한 시스템 및 컴퓨터 판독가능 저장 매체 | |
KR101424303B1 (ko) | 씬 클라이언트 소프트웨어 개발 환경을 제공하기 위한 방법, 서버 기반 소프트웨어 개발 프로젝트 공유를 위한 방법, 및 컴퓨터-판독가능 매체 | |
US20170116396A1 (en) | Optimizing and protecting software | |
US11349816B2 (en) | Obfuscating source code sent, from a server computer, to a browser on a client computer | |
JP2009503677A (ja) | プログラムをデータオブジェクトとしてサポートするコンパイラ | |
CN110414261A (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
EP3379443A1 (en) | Method and computer device to deobfuscate a source code | |
JP2012038231A (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
US6625807B1 (en) | Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation | |
JP6133409B2 (ja) | プログラムのリバースエンジニアリング及び/又は改竄に対する保護のための方法、システム及び装置 | |
JP2013186647A (ja) | 難読化装置、難読化方法、及び難読化プログラム、並びに難読化されたソースコード | |
WO2017065631A1 (en) | Method and system for transforming a source code into a target code on a computer | |
JP2006236327A (ja) | コードモーフィング | |
Karlsson et al. | Extending scala with records: design, implementation, and evaluation | |
AU2013203830B2 (en) | Translating expressions in a computing environment | |
JP5404944B1 (ja) | 情報処理装置およびコンパイラプログラム | |
JP7059757B2 (ja) | Api処理方法、端末、api処理プログラム | |
WO2017095257A1 (en) | Automatic code virtualization for a compiler | |
JP2014149810A (ja) | 情報処理装置およびコンパイラプログラム | |
Juhlin | Developing a Compiler for a Regular Expression Based Policy Specification Language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150302 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160311 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160607 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160627 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20161118 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170321 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20170331 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170525 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170615 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6162733 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |