JP2009524877A - コンパイル時の解釈可能コードエラー検出 - Google Patents

コンパイル時の解釈可能コードエラー検出 Download PDF

Info

Publication number
JP2009524877A
JP2009524877A JP2008552300A JP2008552300A JP2009524877A JP 2009524877 A JP2009524877 A JP 2009524877A JP 2008552300 A JP2008552300 A JP 2008552300A JP 2008552300 A JP2008552300 A JP 2008552300A JP 2009524877 A JP2009524877 A JP 2009524877A
Authority
JP
Japan
Prior art keywords
interpretable
command
computer
linkable
compilable
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.)
Withdrawn
Application number
JP2008552300A
Other languages
English (en)
Inventor
ピー.スノーバー ジェフリー
ディック ジョーンズ ジェフリー
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009524877A publication Critical patent/JP2009524877A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

解釈可能コードの実行時に先立って解釈可能コードのエラー検出の簡易化。解釈可能コマンドにアクセスすると、解釈可能コマンドの対応する構造規則を使用して、構築規則に適合する解釈可能コマンドのコンパイル可能なリンク可能表現が自動的に形成される。次いで、コンパイルされるとき、解釈可能コマンドのコンパイル可能なリンク可能表現にリンクされるソースコードを形成することができる。コンパイルエラーが発生した場合、それらのエラーは、実行時まで待機するのではなく、コンパイル時に発見することができる。一方、コンパイルエラーがない場合は、コンパイルされたオブジェクトは実行することができ、それにより解釈可能コマンドを呼び出すことができる。

Description

本発明は、コンパイル時の解釈可能コードエラー検出に関する。
コンピューティングシステムは、我々が働き、余暇を楽しむ方法に大きな変革を起こしてきた。コンピューティングシステムは、ラップトップコンピュータ、デスクトップコンピュータ、携帯情報端末、電話、および、たとえば冷蔵庫や自動車のようなコンピューティングシステムには従来関連のなかったデバイスさえ含む多種多様な形態で出現する。コンピューティングシステムは、ネットワークを介して相互接続される多数の構成コンピューティングシステムを備えることもある。このように、コンピューティングシステムには、手のひらに収まるほど小さいものもあれば、世界の大部分に広く行き渡るものもある。
コンピューティングシステムは、その物理的形態にはかかわりなく、ハードウェアおよびソフトウェアで構成されている。ハードウェアは、最も基本的には少なくとも1つのプロセッサとメモリを含む。ソフトウェアは、メモリまたは記憶装置に組み入れることができ、コンピューティングシステムの総括的機能を指示するためにプロセッサによってアクセスおよび実行することができる命令を含む。このように、ソフトウェアは、コンピューティングシステムの機能を実現し指示する上で極めて重要である。
ソフトウェアは多くの場合、最初に、より人間が読み取れるプログラミング言語を使用してソフトウェアの所望の機能を表す「ソースコード」を使用して作成される。ソフトウェアの実行に先立つある時点において、ソフトウェアは、コンピューティングシステムのプロセッサによって読み取れる形態に変換される。そのような変換を行わせることができる基本的なプロセスは2つある、すなわち、コンパイル(compilation)および解釈(interpretation)である。
コンパイルまたは解釈において、コンパイラ(コンパイルの場合)またはインタープリタ(解釈の場合)は、プログラミング言語に従って作成されたソースコードにアクセスする。ソースコードがプログラミング言語でコンパイルし、明白な機能的エラーを含んでいない場合、コンパイラまたはインタープリタは、コンピューティングシステムによって実行することができる実行可能コードを生成する。ソースコードがエラーを含んでいる場合、コンパイルおよび解釈の機能は多くの場合、作成者がソースコードに修正を行うことができるようにエラーメッセージを生成する。コンパイルは多くの場合、実行可能コードが実行される十分前に行われる。コンパイラは単に実行可能ファイルを生成するが、実行可能ファイルは後に、ある適切な時点において実行することができる。一方、解釈は、実行可能コードが生成される直前の実行時に行われる。
場合によっては、解釈可能コードはコンパイル可能なコード内に組み入れられる。その場合、コンパイル可能コードは実行可能ファイルにコンパイルされるが、解釈可能コードは実行時まで解釈されることはない。このように、解釈可能コードにエラーがある場合、コード全体の機能が危険にさらされることもある。
本発明の実施形態の態様は、解釈可能コードの実行時に先立って解釈可能コードのエラー検出の簡易化に関する。解釈可能コマンドにアクセスすると、解釈可能コマンドの対応する構築規則を使用して、構築規則に適合する解釈可能コマンドのコンパイル可能なリンク可能表現が形成される。コンパイルの際にコンパイル可能なリンク可能表現にリンクするオブジェクトを作成し取り込む(populate)ソースコードが生成される。コンパイルエラーが発生した場合、それらのエラーは、必要に応じて、実行時の十分前に修正することができる。コンパイルエラーがない場合は、オブジェクトは実行することができ、それにより解釈可能コマンドを呼び出すことができる。このように、解釈可能コマンドの呼び出しにエラーがあるかどうかを判別するために実行時まで待機するのではなく、対応するコンパイル可能コードは、実行時に先立ってエラーを発見するようにコンパイルすることができる。
この「課題を解決するための手段」は、以下の「発明を実施するための最良の形態」においてさらに説明される概念の選択を簡易化した形で紹介するために提供されている。この「課題を解決するための手段」は、特許請求の範囲に記載されている主題の重要な特徴または基本的な特徴を特定することを意図しておらず、また特許請求の範囲に記載されている主題の範囲の決定を補助するものとして使用されることを意図していない。
本発明の前述およびその他の利点と特徴が得られる方法について説明するため、上記で簡単に説明されている本発明のさらに詳細な説明は、添付の図面に示される本発明の特定の実施形態を参照することによって提示される。これらの図面が本発明の典型的な実施形態のみを示すものであり、それゆえに本発明の範囲を限定すると見なされるものではないことを理解した上で、本発明は、添付の図面の使用を通じて追加の具体性および詳細をもって記載および説明される。
本発明は、解釈可能コードの実行時に先立つ解釈可能コードの呼び出しにおけるエラー検出の簡易化に及ぶ。最初に、本発明の原理が動作することができるコンピューティングシステム例が、図1に関して説明されるであろう。次に、本発明の原理は、それ以降の図面に関して、さらに詳細に説明されるであろう。本発明の実施形態は、以下で詳細に説明されるように、さまざまなコンピュータハードウェアを含む、特殊用途または汎用のコンピュータを備えることができる。
図1は、本発明の特徴を実施するために使用することができるコンピューティングシステム例100の概略図を示している。説明されるコンピューティングシステムは、そのような適切なコンピューティングシステムの一例に過ぎず、本発明の使用または機能の範囲に関していかなる限定を意味することも意図していない。また、本発明は、図1に示されるコンポーネントのいずれかまたはそれらの組合せに関連して依存または要件を有するものと解釈すべきでない。
コンピューティングシステムは現在、ますます多種多様な形態をとるようになっている。コンピューティングシステムは、たとえば、ハンドヘルドデバイス、アプライアンス、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、または分散コンピューティングシステムであってもよい。本説明および特許請求の範囲において、「コンピューティングシステム」という用語は、少なくとも1つのプロセッサ、およびプロセッサによって実行できるコンピュータ実行可能命令を有することができるメモリを含む任意のデバイスまたはシステム(あるいはそれらの組合せ)を含むものとして広範囲に定義される。メモリは、任意の形態をとることができ、コンピューティングシステムの特性および形態に依存することができる。コンピューティングシステムは、ネットワーク環境を介して分散することができ、多数の構成コンピューティングシステムを含むことができる。
図1を参照すると、その最も基本的な構成において、コンピューティングシステム100は通常、少なくとも1つの処理装置102およびメモリ104を含む。メモリ104は、揮発性、不揮発性、またはこの2つの組合せであってもよく、1つまたは複数の物理コンピュータ可読メディアを表す。揮発性メモリの例は、ランダムアクセスメモリ(RAM)を含む。不揮発性メモリの例は、読み取り専用メモリ(ROM)、フラッシュメモリなどを含む。「メモリ」という用語はまた、本明細書において不揮発性大容量記憶装置を示すために使用することもできる。そのような記憶装置は、取り外し可能または固定式であってもよく、PCMCIAカード、磁気および光ディスク、磁気テープなどを含むことができる(ただし、これらに限定されることはない)。
本明細書において使用されるように、「モジュール」または「コンポーネント」という用語は、コンピューティングシステムで実行するソフトウェアオブジェクトまたはルーチンを示すことができる。本明細書において説明されるさまざまなコンポーネント、モジュール、エンジン、およびサービスは、プロトコルの一環として(たとえば、別個のスレッドとして)コンピューティングシステムで実行するオブジェクトまたはプロセスとして実施することができる。本明細書に説明されるシステムおよび方法はソフトウェアで実施することができるが、ハードウェア、およびソフトウェアとハードウェアの組合せにおける実施もまた可能であり、企図されている。
これ以降の説明において、本発明の実施形態は、1つまたは複数のコンピューティングシステムによって実行される動作(act)を参照して説明される。そのような動作がソフトウェアで実施される場合、動作を実行する関連するコンピューティングシステムの1つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答してコンピューティングシステムのオペレーションを指示する。そのようなオペレーションの例は、データの操作を伴う。コンピュータ実行可能命令(および操作されたデータ)は、コンピューティングシステム100のメモリ104に格納することができる。
コンピューティングシステム100はまた、コンピューティングシステム100が、たとえばネットワーク110を介して他のコンピューティングシステムと通信できるようにする通信チャネル108も含むことができる。通信チャネル108は、通信メディアの例である。通信メディアは通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波または他のトランスポート機構のような変調データ信号に具現し、任意の情報伝達メディアを含む。たとえば、通信メディアは、有線ネットワークおよび直接配線接続のような有線メディア、ならびに音響、無線、RF、赤外線などの無線メディアを含むが、これらに限定されることはない。本明細書で使用されるコンピュータ可読メディアという用語は、記憶メディアと通信メディアの両方を含む。
本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を担持したり格納したりするためのコンピュータ可読メディアも含む。そのようなコンピュータ可読メディアは、汎用または特殊用途のコンピュータによってアクセスできる任意の利用可能なメディアにすることができる。たとえば、そのようなコンピュータ可読メディアは、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスクストレージ、磁気ディスクストレージまたはその他の磁気記憶装置、あるいは所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態で担持したり格納したりするために使用することができ、汎用または特殊用途コンピュータによってアクセスすることができる他のメディアを備えることができるが、これらに限定されない。情報が、ネットワークまたは別の通信接続(ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せ)を介してコンピュータに転送または提供される場合、コンピュータはその接続をコンピュータ可読メディアと適正に見なす。このように、そのような接続はいずれも、適正にコンピュータ可読メディアと称される。上記の組合せも、コンピュータ可読メディアの範囲内に含まれるべきである。
コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特殊用途コンピュータ、または特殊用途処理装置に、特定の機能または機能のグループを実行させる命令およびデータを備える。この主題は、構造的特徴および/または方法論的動作に固有の言語で説明してきたが、添付の特許請求の範囲において定義される主題は、必ずしも前述の固有の特徴または動作に限定されないことが理解されよう。むしろ、前述の固有の特徴および動作は、特許請求の範囲を実施する例示の形態として開示される。
図2は、本発明の原理が動作することができる環境200を示す。環境200は、図1のコンピューティングシステム100内で実施することができるが、それは必須ではない。図1のコンピューティングシステム100内で実施することができる場合、環境200は、システムメモリ内でインスタンス化されるオブジェクトおよびデータ構造を含むことができ、および/または格納されている有効なコンピュータ実行可能命令であってもよい。
リンク可能ライブラリジェネレータ210は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せにすることができる。リンク可能ライブラリジェネレータ210は、解釈可能コード201Aにアクセスし、その解釈可能コード201Aの関連する構築規則202Aを使用して解釈可能コードのコンパイル可能なリンク可能表現211A(コンパイル可能なリンク可能ライブラリ211Aを参照)を形成するコンポーネントである。この説明および特許請求の範囲において、「リンク可能ライブラリ」とは、コンパイル中にオブジェクトをリンクすることができるクラス定義の1つまたは複数の表現のグループである。リンク可能ライブラリジェネレータ210は、人間の介入なしに、コンパイル可能なリンク可能ライブラリ211Aを自動的に形成することができるか、またはユーザの介入を許可して人間が形成プロセスに参加できるようにすることができる。リンク可能ライブラリジェネレータ201は、1つまたは複数のモジュールを備えることができ、および/またはリンク可能ライブラリ生成に関与しないモジュールの一部を含むことができる。
図3は、本発明の原理の1つの態様による、解釈可能コードの実行時に先立って解釈可能コードのエラー検出を容易にする方法300の流れ図を示す。方法300は環境200において実行することができるので、図3の方法300は、図2の環境200を頻繁に参照して説明される。
最初に、リンク可能ライブラリジェネレータ210は、解釈可能コマンドにアクセスする(動作301)。図2を参照すると、解釈可能コマンドは、解釈可能コード201Aで表現することができる。解釈可能コードは、ネットワークを介して、ローカルストレージから、システムメモリから、またはそれらの任意の組合せからアクセスすることができる。解釈可能コードは、最近またはより遠い過去に構築されたものであってもよく、人間によって作成されたか、またはコンピューティングシステムによって自動的に生成されたものであってもよい。
本発明のさらに広義の原理を明確にするために、解釈可能コマンドの2つの例が示され、この説明全体を通じて使用される。第1の例において、これ以降「第1の実施例」と呼ぶ、解釈可能コマンドは以下の形態をとる。
Figure 2009524877
この解釈可能コマンドは、コマンドラインツールを使用して許容可能とすることができる。コマンドは、ディレクトリ構造をナビゲートする際に現在の場所を設定する。このコマンドは、現在のディレクトリをc:\windowsディレクトリに設定する。しかし、コマンドラインツールに入力されるのではなく、解釈可能コマンドは、パラメータとしてコンパイル可能コードにプログラム的に入力することができる。たとえば、Set−locationコマンドは、以下のように、プログラム的にShellExecuteコマンドに組み入れることができる。
Figure 2009524877
これ以降「第2の実施例」と呼ぶ第2の例として、コマンドラインエントリとして表される次の解釈可能コードを考察する。
Figure 2009524877
コマンドは、パスプロパティで指定されている場所、この場合“c:\windows”のすべてのファイルのリストを取得する。しかし、ここでも同様に、コマンドラインツールに入力するのではなく、解釈可能コマンドは次のように、パラメータとしてコンパイル可能コードにプログラムチックに入力することができる。
Figure 2009524877
従来より、解釈可能コマンドが即時実行のためにコマンドラインツールに入力されるかどうか、または解釈可能コマンドが他のソースコード(たとえば、ShellExecute(“...”))内でプログラム的に組み入れられるかどうかにかかわらず、解釈可能コード自体の構造は、実行時まで、つまり解釈可能コードが実行される直前まで評価されない。これが、解釈可能コードの性質である。したがって、解釈可能コードにエラーがあった場合、たとえ解釈可能コードが他のコンパイル可能ソースコードに組み込まれていたとしても、エラーは実行時まで発見されることはない。
本発明の原理に従って、解釈可能なコード自体のコンパイル可能なリンク可能表現が形成される。次いで、コンパイル時に、コンパイル可能なリンク可能表現に基づくオブジェクトを作成し取り込むソースコードを形成することができる。コンパイルされリンクされたオブジェクトは、実行時に、対応する解釈可能コマンドを呼び出す。ソースコードのコンパイルが失敗した場合、解釈可能コマンドを呼び出すソースコードにエラーがある可能性が高い。それらのエラーは、このように、必要に応じて、実行時の十分前に修正することができる。
図2および図3に戻って参照すると、解釈可能コマンド201Aにアクセスすること(動作301)に加えて、コンパイルコードジェネレータ210はさらに、解釈可能コマンドに対応する構築規則にもアクセスする(動作302)。たとえば、構築規則202Aは、解釈可能コマンド201Aに対応することができる。その他の構築規則202Bは、他の解釈可能コマンド201Bに対応することができる。
たとえば、“Set−location −path‘c:\windows’”の第1の実施例の場合、“Set−Location”のコマンドのカテゴリの構築規則にアクセスすることができる。おそらくは、プロパティが必須またはオプションであるかどうか、どれが許容可能な値のタイプおよび/または値であるか(たとえば、テキスト文字列はプロパティ“path”に対して許容可能な値のタイプである)、ならびにその他の構築規則にはかかわりなく、これらの構築規則は、コマンドの名称(たとえば、“Set−location”)を指定することができ、コマンドのプロパティの適切な名称(たとえば、この場合は“path”)をリストすることができる。構築規則は、人間が読み取れる形態で表現することができ、その場合、構築規則は人間によって評価することができる。代替として、構築規則は、たとえば、コンピューティングシステムによって理解されるスキーマに準拠するeXtensible Markup Language(XML)文書などの、コンピュータで読み取れる形態で表現することができる。
同様に、“Get−item −path‘c:\windows’”の第2の実施例の場合、“Get−item”のコマンドのカテゴリの構築規則にアクセスすることができる。おそらくはプロパティが必須またはオプションであるかどうか、どれが許容可能な値のタイプおよび/または値であるか(たとえば、テキスト文字列はプロパティ“path”に対して許容可能な値のタイプである)などにはかかわりなく、これらの構築規則は、コマンドの名称(たとえば、“Get−item”)を指定することができ、コマンドのプロパティの適切な名称(たとえば、この場合は“path”)をリストすることができる。ここでも同様に、構築規則は、人間が解釈することができ、および/またはコンピュータが解釈することができる。
図2および図3に戻って参照すると、リンク可能ライブラリジェネレータは次に、構築規則を使用して、構築規則に適合する解釈可能コマンドのコンパイル可能なリンク可能表現を形成する(動作303)。たとえば、図2において、リンク可能ライブラリジェネレータ210は、コンパイル可能なリンク可能ライブラリ211Aを生成する。これは、さまざまな方法で実行することができる。たとえば、手動による方法では、人間の作成者は構築規則を評価することができ、オーサリングツールとしてリンク可能ライブラリジェネレータ210を使用して解釈可能コードのコンパイル可能なリンク可能表現を形成することができる。自動化の方法では、リンク可能ライブラリジェネレータ210自体が、人間が介入することなく評価およびオーサリングを実行することができる。
完了すると、コンパイル可能なリンク可能表現は、解釈可能コマンドに関連付けられている構造規則に従って構造化される。図3を参照すると、次に、解釈可能コードのコンパイル可能なリンク可能表現は、たとえ解釈可能コードが実行される以前のある時点であったとしても、コンパイルすることができる(動作304)。
実行時に先立ついずれの時点においても、コード(たとえば、ソースコード)を形成することができ(動作305)、これは、コンパイル時に(動作306)、解釈可能コードのコンパイル可能なリンク可能表現に基づきリンクするオブジェクトを形成し取り込む。たとえば、コンパイル可能なリンク可能表現がクラス定義であった場合、ソースコードは、クラス定義によって定義されたクラスのインスタンスであるオブジェクトの形成および取り込みを指示することができる。図2を参照すると、コンパイルコードジェネレータ220はコンパイル可能なコード221を生成し、次いでこのコードがコンパイラ230を使用してコンパイルされて、コンパイルレポート231が生成される。ソースコードは、コンピュータによって自動的に生成することができるか、またはユーザ入力に応答して生成することができる。
コンパイルエラーがコンパイルの結果検出されなかった場合、解釈コードは構造的に正常である可能が高く、実行されたときに実行時エラーを発生する可能性は低い。このように、その後のいかなる時点においても、オブジェクトは実行することができ、それにより解釈可能コマンドを呼び出すことができる。コンパイルエラーがコンパイルの結果検出された場合(動作307)、解釈可能コマンドを呼び出すオブジェクトを作成したソースコードは、エラーを修正するように変更することができる(動作308)。したがって、コンパイル可能コード内のエラーまたはコンパイル可能コード内に組み込まれているエラーを検出して修正するために実行時まで待機するのではなく、実行時よりも十分前に任意のエラーを検出することができる。図3の方法300は、省略符号201B、202B、および211Bで表されるように、複数のコマンド、複数の構築規則について、解釈可能コードの複数のコンパイル可能なリンク可能表現で実行することができる。
解釈可能コマンドのコンパイル可能なリンク可能表現がクラス定義である特定の例として、クラス定義のパラメータは、解釈可能コマンドのパラメータをとり、クラス定義に同じ名前のプロパティを設定することによって生成することができる。呼び出しメソッドは、設定されているクラスのプロパティをとるクラス定義に追加することができ、クラスのそれぞれのパラメータに引数としてプロパティの値を使用してコマンドを実行する。クラスは、インスタンス化されてオブジェクトを形成することができ、パラメータのプロパティを、解釈可能コマンドで提供される値に対応する値に設定する。次いで、呼び出しメソッドをコールすることができる。
ここで、解釈可能コマンド“Set−location −path‘c:\windows’”がコンパイル可能コードジェネレータ210に提供される第1の実施例を参照する。コンパイル可能コードジェネレータは、C#骨組みコードを使用して表される以下のクラスを生成することができる。
Figure 2009524877
実行されるとき、解釈可能な“Set−location −path‘c:\windows’”コマンドを呼び出すオブジェクトを生成するソースコードは、第1の実施例において以下のように表すことができる。
Figure 2009524877
この呼び出しメソッドは、コールされるとき、コンパイル可能なリンク可能表現が生成された解釈可能コマンドを実行し、結果がある場合はそれを返す。
ソースコードが、存在しないパラメータを設定しようと試みる場合、コンパイル時エラーが生じる。たとえば、以下の第2行は、“FullName”がクラス“SetLocationCommand”の定義されたプロパティではないので、コンパイラが実行されたときに失敗の原因となろう。
Figure 2009524877
第2の実施例において、解釈可能コマンド“Get−item −path‘c:\windows’”は、擬似コードによって表される以下のクラスに変換される。
Figure 2009524877
コンパイルされ実行されるとき、クラスのオブジェクトインスタンスをインスタンス化するソースコードを、生成することができる。たとえば、ソースコードは以下のように表すことができる。
Figure 2009524877
コンパイル時に、ソースコードがコンパイルされ、関連付けられた解釈可能コマンドの構造を定義するクラスにリンクされたので、対応するオブジェクトが実行時にコマンド“Get−item −path‘c:\windows’”に関連付けられている解釈可能コマンドを正常に実行する可能性がより高いことが認識されよう。ここで、作成者は、代わりに、以下のソースコードを作成したとする。
Figure 2009524877
ここで、ユーザは、単に“path”を間違えて“p”とタイプした。このソースコードをコンパイルするとき、コンパイラは、“GetItemCommand”クラスが“ath”プロパティを有さないと認識し、それによりコンパイルに失敗する。したがって、コンパイル時の後、ソースコードのエラーは、実行時の十分前に修正することができる。
本発明は、本発明の精神または本質的特徴を逸脱することなく、その他の特定の形態で具現することができる。説明される実施形態は、あらゆる点において、限定的ではなく単に例示的なものとして見なされるべきである。それゆえに、本発明の範囲は、前述の説明によってよりも、添付の特許請求の範囲によって指示される。特許請求の範囲の均等の意味および範囲内にあるすべての変更は、それらの範囲内に包括的にとらえられるものとする。
本発明の原理を採用することができる適切なコンピューティング環境を示す図である。 本発明の原理の1つの態様により、コンパイルコードジェネレータが、解釈可能コードの構築規則に基づいて解釈可能コードのコンパイル可能なリンク可能表現を形成する環境を示す図であり、コンパイル可能なリンク可能表現は、必ずしも実行時ではなく、コンパイル時において解釈可能コマンドのコンパイル可能表現の呼び出しのエラーを特定するために使用される。 本発明の実施形態の1つの態様による、解釈可能コードの実行時に先立つ解釈可能コードのエラー検出を容易にする方法を示す流れ図である。

Claims (20)

  1. 解釈可能コードの実行時に先立って前記解釈可能コードのエラー検出を容易にするためのコンピュータ実施の方法であって、
    解釈可能コマンドにアクセスする動作と、
    前記解釈可能コマンドに対応する構築規則にアクセスする動作と、
    前記構築規則を使用して、前記構築規則に適合する前記解釈可能コマンドのコンパイル可能なリンク可能表現を形成する動作と
    を備えることを特徴とする方法。
  2. 前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記構築規則に適合するオブジェクトのクラス定義を備えることを特徴とする請求項1に記載のコンピュータ実施の方法。
  3. コンパイルされるときに、前記コマンドの前記コンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込むソースコードを形成する動作
    をさらに備えることを特徴とする請求項1に記載のコンピュータ実装の方法。
  4. 前記ソースコードをコンパイルして、それにより前記コマンドの前記コンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込む動作
    をさらに備えることを特徴とする請求項3に記載のコンピュータ実装の方法。
  5. コンパイルする前記動作の結果として、コンパイルエラーレポートを検出する動作を
    さらに備えることを特徴とする請求項4に記載のコンピュータ実装の方法。
  6. 前記コンパイルエラーレポートの結果として、前記解釈可能コマンドを変更する動作を
    さらに備えることを特徴とする請求項5に記載のコンピュータ実装の方法。
  7. 前記構築規則は、前記コマンドを含む規則のカテゴリに対する構造規則を定義することを特徴とする請求項1に記載のコンピュータ実施の方法。
  8. 前記構築規則は、第1の構築規則であり、規則の前記カテゴリは、規則の第1のカテゴリであり、前記コマンドは第1のコマンドである方法であって、
    規則の前記第1のカテゴリとは異なる規則の第2のカテゴリにある第2の解釈可能コマンドにアクセスする動作と、
    前記第2の解釈可能コマンドに対応する第2の構築規則にアクセスする動作と、
    前記第2の構築規則を使用して、前記第2の構築規則に適合する前記第2の解釈可能コマンドの第2のコンパイル可能なリンク可能表現を形成する動作と
    をさらに備えることを特徴とする請求項7に記載のコンピュータ実装の方法。
  9. 前記第2の解釈可能コマンドの前記第2のコンパイル可能なリンク可能表現は、前記第2の構築規則に適合する第2のオブジェクトの第2のクラス定義を備えることを特徴とする請求項8に記載のコンピュータ実施の方法。
  10. コンパイルされるときに、前記コマンドの前記第2のコンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込むソースコードを形成する動作
    をさらに備えることを特徴とする請求項8に記載のコンピュータ実装の方法。
  11. コンピューティングシステムの1つまたは複数のプロセッサによって実行されるとき、前記1つまたは複数のプロセッサは、解釈可能コードの実行時に先立って前記解釈可能コードのエラー検出を容易にする方法を前記コンピューティングシステムに実行させるように構造化されたコンピュータ実行可能命令を有する1つまたは複数のコンピュータ可読メディアを備えたコンピュータプログラムプロダクトであって、前記方法は、
    解釈可能コマンドおよび前記解釈可能コマンドに対応する構築規則にアクセスすることと、
    前記構築規則を使用して、前記解釈可能コマンドのコンパイル可能なリンク可能表現を形成することと
    を備えたことを特徴とするコンピュータプログラムプロダクト。
  12. 前記1つまたは複数のコンピュータ可読メディアは、物理システムメモリおよび/または物理記憶メディアであることを特徴とする請求項11に記載のコンピュータプログラムプロダクト。
  13. 前記1つまたは複数のコンピュータ可読メディアは、取り外し可能記憶メディアであることを特徴とする請求項11に記載のコンピュータプログラムプロダクト。
  14. 前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記構築規則に適合するオブジェクトのクラス定義を備えたことを特徴とする請求項11に記載のコンピュータプログラムプロダクト。
  15. 前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記クラス定義から導かれるオブジェクトを形成して取り込むように構成されるソースコードを備えたことを特徴とする請求項11に記載のコンピュータプログラムプロダクト。
  16. 前記方法は、
    コンパイルされるときに、前記コマンドの前記コンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込むソースコードを形成する動作
    をさらに備えたることを特徴とする請求項15に記載のコンピュータプログラムプロダクト。
  17. 前記構築規則は、前記コマンドを含む規則のカテゴリに対する構造規則を定義することを特徴とする請求項16に記載のコンピュータプログラムプロダクト。
  18. コンピューティングシステムであって、
    1つまたは複数のプロセッサと、
    前記コンピューティングシステムの前記1つまたは複数のプロセッサによって実行されるとき、前記1つまたは複数のプロセッサが解釈可能コマンドおよび構築規則にアクセスすると前記構築規則を使用して前記解釈可能コマンドのコンパイル可能なリンク可能表現を前記コンピューティングシステムに形成させるように構造化されたコンピュータ実行可能命令を有する1つまたは複数の物理コンピュータ可読メディアと
    を備えたことを特徴とするコンピューティングシステム。
  19. 前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記構築規則に適合するオブジェクトのクラス定義を備えたことを特徴とする請求項18に記載のコンピューティングシステム。
  20. 前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、コンパイルされると、前記クラス定義にリンクされるオブジェクトを形成し取り込むように構成されたソースコードを形成するように使用することができることを特徴とする請求項18に記載のコンピューティングシステム。
JP2008552300A 2006-01-25 2006-12-28 コンパイル時の解釈可能コードエラー検出 Withdrawn JP2009524877A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/339,365 US20070174823A1 (en) 2006-01-25 2006-01-25 Compile-time interpretable code error detection
PCT/US2006/049553 WO2007087075A1 (en) 2006-01-25 2006-12-28 Compile-time interpretable code error detection

Publications (1)

Publication Number Publication Date
JP2009524877A true JP2009524877A (ja) 2009-07-02

Family

ID=38287111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008552300A Withdrawn JP2009524877A (ja) 2006-01-25 2006-12-28 コンパイル時の解釈可能コードエラー検出

Country Status (6)

Country Link
US (1) US20070174823A1 (ja)
EP (1) EP1979810A4 (ja)
JP (1) JP2009524877A (ja)
KR (1) KR20080087871A (ja)
CN (1) CN101336413A (ja)
WO (1) WO2007087075A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799877B2 (en) * 2009-03-27 2014-08-05 Optumsoft, Inc. Interpreter-based program language translator using embedded interpreter types and variables
KR102028663B1 (ko) 2012-07-24 2019-10-04 삼성전자주식회사 에러 검출 방법 및 장치
US10872027B2 (en) * 2018-04-18 2020-12-22 The Mathworks, Inc. Run-time or compile-time error solutions for locating missing program elements in a programming environment

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8814630D0 (en) * 1987-11-17 1988-07-27 Ibm Dynamically adaptive environment for computer programs
US5390314A (en) * 1992-10-09 1995-02-14 American Airlines, Inc. Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification
US5694539A (en) * 1994-08-10 1997-12-02 Intrinsa Corporation Computer process resource modelling method and apparatus
US6149318A (en) * 1997-04-15 2000-11-21 Samuel C. Kendall Link-time and run-time error detection, and program instrumentation
US6799320B1 (en) * 1998-12-16 2004-09-28 Microsoft Corporation Providing binding options for component interfaces
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
US6779172B1 (en) * 1999-10-22 2004-08-17 International Business Machines Corporation Bean scripting framework
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
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
AU2003238815A1 (en) * 2002-05-29 2003-12-19 Globespan Virata Incorporated Method and system for providing a command-line interface syntax from an xml specification
US6873935B2 (en) * 2003-03-03 2005-03-29 Microsoft Corporation System and method for statically checking source code
US7620959B2 (en) * 2003-05-12 2009-11-17 Microsoft Corporation Reflection-based processing of input parameters for commands
CA2433527A1 (en) * 2003-06-26 2004-12-26 Ibm Canada Limited - Ibm Canada Limitee System and method for object-oriented graphically integrated command sh ell

Also Published As

Publication number Publication date
KR20080087871A (ko) 2008-10-01
CN101336413A (zh) 2008-12-31
EP1979810A4 (en) 2009-06-03
EP1979810A1 (en) 2008-10-15
US20070174823A1 (en) 2007-07-26
WO2007087075A1 (en) 2007-08-02

Similar Documents

Publication Publication Date Title
US7127707B1 (en) Intellisense in project upgrade
US10747648B2 (en) Mock object generation
EP2521967B1 (en) Creating inferred symbols from code usage
Graf et al. Using joana for information flow control in java programs-a practical guide
US7970730B2 (en) Efficient data access via runtime type inference
US7694274B2 (en) Dynamically typed unsafe variance
EP1477897A2 (en) Reflection-based processing of input parameters for commands
US20060225053A1 (en) Programming language improvements
US20060212847A1 (en) Type checker for a typed intermediate representation of object-oriented languages
US7165237B2 (en) Data store for arbitrary data types with type safe storage and retrieval
US8141035B2 (en) Method for accessing internal states of objects in object oriented programming
US10296313B2 (en) Safely consuming dynamically-typed code from a statically-typed programming language
US7703077B2 (en) Programming model to detect deadlocks in concurrent programs
US20180165106A1 (en) Instance Interfaces and Mix-ins for Dynamic Languages
US9274755B2 (en) Infrastructure for generating code using annotation and template generators
EP1452962A2 (en) System and method for defining and using subclasses declaratively within markup
CN116974581B (zh) 代码生成方法、装置、电子设备和存储介质
Male et al. Java bytecode verification for@ NonNull types
US8769514B2 (en) Detecting race conditions with a software transactional memory system
JP2009524877A (ja) コンパイル時の解釈可能コードエラー検出
US8739136B2 (en) Validating run-time references
JP5276094B2 (ja) トランザクション・メモリ・システムにおけるトランザクション・コード・ブロックを効果的に検索する方法
Schöne et al. Incremental causal connection for self-adaptive systems based on relational reference attribute grammars
US7917893B2 (en) Using a system of annotations to generate views and adapters
Ghoreshi et al. An incremental method for extracting tests from object-oriented specification

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20100302