(57)【要約】  解釈可能コードの実行時に先立って解釈可能コードのエラー検出の簡易化。解釈可能コマンドにアクセスすると、解釈可能コマンドの対応する構造規則を使用して、構築規則に適合する解釈可能コマンドのコンパイル可能なリンク可能表現が自動的に形成される。次いで、コンパイルされるとき、解釈可能コマンドのコンパイル可能なリンク可能表現にリンクされるソースコードを形成することができる。コンパイルエラーが発生した場合、それらのエラーは、実行時まで待機するのではなく、コンパイル時に発見することができる。一方、コンパイルエラーがない場合は、コンパイルされたオブジェクトは実行することができ、それにより解釈可能コマンドを呼び出すことができる。
2009524877.tif 000002
【特許請求の範囲】
【請求項１】
解釈可能コードの実行時に先立って前記解釈可能コードのエラー検出を容易にするためのコンピュータ実施の方法であって、
解釈可能コマンドにアクセスする動作と、
前記解釈可能コマンドに対応する構築規則にアクセスする動作と、
前記構築規則を使用して、前記構築規則に適合する前記解釈可能コマンドのコンパイル可能なリンク可能表現を形成する動作と
を備えることを特徴とする方法。
【請求項２】
前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記構築規則に適合するオブジェクトのクラス定義を備えることを特徴とする請求項１に記載のコンピュータ実施の方法。
【請求項３】
コンパイルされるときに、前記コマンドの前記コンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込むソースコードを形成する動作
をさらに備えることを特徴とする請求項１に記載のコンピュータ実装の方法。
【請求項４】
前記ソースコードをコンパイルして、それにより前記コマンドの前記コンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込む動作
をさらに備えることを特徴とする請求項３に記載のコンピュータ実装の方法。
【請求項５】
コンパイルする前記動作の結果として、コンパイルエラーレポートを検出する動作を
さらに備えることを特徴とする請求項４に記載のコンピュータ実装の方法。
【請求項６】
前記コンパイルエラーレポートの結果として、前記解釈可能コマンドを変更する動作を
さらに備えることを特徴とする請求項５に記載のコンピュータ実装の方法。
【請求項７】
前記構築規則は、前記コマンドを含む規則のカテゴリに対する構造規則を定義することを特徴とする請求項１に記載のコンピュータ実施の方法。
【請求項８】
前記構築規則は、第１の構築規則であり、規則の前記カテゴリは、規則の第１のカテゴリであり、前記コマンドは第１のコマンドである方法であって、
規則の前記第１のカテゴリとは異なる規則の第２のカテゴリにある第２の解釈可能コマンドにアクセスする動作と、
前記第２の解釈可能コマンドに対応する第２の構築規則にアクセスする動作と、
前記第２の構築規則を使用して、前記第２の構築規則に適合する前記第２の解釈可能コマンドの第２のコンパイル可能なリンク可能表現を形成する動作と
をさらに備えることを特徴とする請求項７に記載のコンピュータ実装の方法。
【請求項９】
前記第２の解釈可能コマンドの前記第２のコンパイル可能なリンク可能表現は、前記第２の構築規則に適合する第２のオブジェクトの第２のクラス定義を備えることを特徴とする請求項８に記載のコンピュータ実施の方法。
【請求項１０】
コンパイルされるときに、前記コマンドの前記第２のコンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込むソースコードを形成する動作
をさらに備えることを特徴とする請求項８に記載のコンピュータ実装の方法。
【請求項１１】
コンピューティングシステムの１つまたは複数のプロセッサによって実行されるとき、前記１つまたは複数のプロセッサは、解釈可能コードの実行時に先立って前記解釈可能コードのエラー検出を容易にする方法を前記コンピューティングシステムに実行させるように構造化されたコンピュータ実行可能命令を有する１つまたは複数のコンピュータ可読メディアを備えたコンピュータプログラムプロダクトであって、前記方法は、
解釈可能コマンドおよび前記解釈可能コマンドに対応する構築規則にアクセスすることと、
前記構築規則を使用して、前記解釈可能コマンドのコンパイル可能なリンク可能表現を形成することと
を備えたことを特徴とするコンピュータプログラムプロダクト。
【請求項１２】
前記１つまたは複数のコンピュータ可読メディアは、物理システムメモリおよび／または物理記憶メディアであることを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１３】
前記１つまたは複数のコンピュータ可読メディアは、取り外し可能記憶メディアであることを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１４】
前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記構築規則に適合するオブジェクトのクラス定義を備えたことを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１５】
前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記クラス定義から導かれるオブジェクトを形成して取り込むように構成されるソースコードを備えたことを特徴とする請求項１１に記載のコンピュータプログラムプロダクト。
【請求項１６】
前記方法は、
コンパイルされるときに、前記コマンドの前記コンパイル可能なリンク可能表現にリンクされるオブジェクトを作成し取り込むソースコードを形成する動作
をさらに備えたることを特徴とする請求項１５に記載のコンピュータプログラムプロダクト。
【請求項１７】
前記構築規則は、前記コマンドを含む規則のカテゴリに対する構造規則を定義することを特徴とする請求項１６に記載のコンピュータプログラムプロダクト。
【請求項１８】
コンピューティングシステムであって、
１つまたは複数のプロセッサと、
前記コンピューティングシステムの前記１つまたは複数のプロセッサによって実行されるとき、前記１つまたは複数のプロセッサが解釈可能コマンドおよび構築規則にアクセスすると前記構築規則を使用して前記解釈可能コマンドのコンパイル可能なリンク可能表現を前記コンピューティングシステムに形成させるように構造化されたコンピュータ実行可能命令を有する１つまたは複数の物理コンピュータ可読メディアと
を備えたことを特徴とするコンピューティングシステム。
【請求項１９】
前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、前記構築規則に適合するオブジェクトのクラス定義を備えたことを特徴とする請求項１８に記載のコンピューティングシステム。
【請求項２０】
前記解釈可能コマンドの前記コンパイル可能なリンク可能表現は、コンパイルされると、前記クラス定義にリンクされるオブジェクトを形成し取り込むように構成されたソースコードを形成するように使用することができることを特徴とする請求項１８に記載のコンピューティングシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、コンパイル時の解釈可能コードエラー検出に関する。
【０００２】
コンピューティングシステムは、我々が働き、余暇を楽しむ方法に大きな変革を起こしてきた。コンピューティングシステムは、ラップトップコンピュータ、デスクトップコンピュータ、携帯情報端末、電話、および、たとえば冷蔵庫や自動車のようなコンピューティングシステムには従来関連のなかったデバイスさえ含む多種多様な形態で出現する。コンピューティングシステムは、ネットワークを介して相互接続される多数の構成コンピューティングシステムを備えることもある。このように、コンピューティングシステムには、手のひらに収まるほど小さいものもあれば、世界の大部分に広く行き渡るものもある。
【０００３】
コンピューティングシステムは、その物理的形態にはかかわりなく、ハードウェアおよびソフトウェアで構成されている。ハードウェアは、最も基本的には少なくとも１つのプロセッサとメモリを含む。ソフトウェアは、メモリまたは記憶装置に組み入れることができ、コンピューティングシステムの総括的機能を指示するためにプロセッサによってアクセスおよび実行することができる命令を含む。このように、ソフトウェアは、コンピューティングシステムの機能を実現し指示する上で極めて重要である。
【０００４】
ソフトウェアは多くの場合、最初に、より人間が読み取れるプログラミング言語を使用してソフトウェアの所望の機能を表す「ソースコード」を使用して作成される。ソフトウェアの実行に先立つある時点において、ソフトウェアは、コンピューティングシステムのプロセッサによって読み取れる形態に変換される。そのような変換を行わせることができる基本的なプロセスは２つある、すなわち、コンパイル（compilation）および解釈（interpretation）である。
【０００５】
コンパイルまたは解釈において、コンパイラ（コンパイルの場合）またはインタープリタ（解釈の場合）は、プログラミング言語に従って作成されたソースコードにアクセスする。ソースコードがプログラミング言語でコンパイルし、明白な機能的エラーを含んでいない場合、コンパイラまたはインタープリタは、コンピューティングシステムによって実行することができる実行可能コードを生成する。ソースコードがエラーを含んでいる場合、コンパイルおよび解釈の機能は多くの場合、作成者がソースコードに修正を行うことができるようにエラーメッセージを生成する。コンパイルは多くの場合、実行可能コードが実行される十分前に行われる。コンパイラは単に実行可能ファイルを生成するが、実行可能ファイルは後に、ある適切な時点において実行することができる。一方、解釈は、実行可能コードが生成される直前の実行時に行われる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
場合によっては、解釈可能コードはコンパイル可能なコード内に組み入れられる。その場合、コンパイル可能コードは実行可能ファイルにコンパイルされるが、解釈可能コードは実行時まで解釈されることはない。このように、解釈可能コードにエラーがある場合、コード全体の機能が危険にさらされることもある。
【課題を解決するための手段】
【０００７】
本発明の実施形態の態様は、解釈可能コードの実行時に先立って解釈可能コードのエラー検出の簡易化に関する。解釈可能コマンドにアクセスすると、解釈可能コマンドの対応する構築規則を使用して、構築規則に適合する解釈可能コマンドのコンパイル可能なリンク可能表現が形成される。コンパイルの際にコンパイル可能なリンク可能表現にリンクするオブジェクトを作成し取り込む（populate）ソースコードが生成される。コンパイルエラーが発生した場合、それらのエラーは、必要に応じて、実行時の十分前に修正することができる。コンパイルエラーがない場合は、オブジェクトは実行することができ、それにより解釈可能コマンドを呼び出すことができる。このように、解釈可能コマンドの呼び出しにエラーがあるかどうかを判別するために実行時まで待機するのではなく、対応するコンパイル可能コードは、実行時に先立ってエラーを発見するようにコンパイルすることができる。
【０００８】
この「課題を解決するための手段」は、以下の「発明を実施するための最良の形態」においてさらに説明される概念の選択を簡易化した形で紹介するために提供されている。この「課題を解決するための手段」は、特許請求の範囲に記載されている主題の重要な特徴または基本的な特徴を特定することを意図しておらず、また特許請求の範囲に記載されている主題の範囲の決定を補助するものとして使用されることを意図していない。
【０００９】
本発明の前述およびその他の利点と特徴が得られる方法について説明するため、上記で簡単に説明されている本発明のさらに詳細な説明は、添付の図面に示される本発明の特定の実施形態を参照することによって提示される。これらの図面が本発明の典型的な実施形態のみを示すものであり、それゆえに本発明の範囲を限定すると見なされるものではないことを理解した上で、本発明は、添付の図面の使用を通じて追加の具体性および詳細をもって記載および説明される。
【発明を実施するための最良の形態】
【００１０】
本発明は、解釈可能コードの実行時に先立つ解釈可能コードの呼び出しにおけるエラー検出の簡易化に及ぶ。最初に、本発明の原理が動作することができるコンピューティングシステム例が、図１に関して説明されるであろう。次に、本発明の原理は、それ以降の図面に関して、さらに詳細に説明されるであろう。本発明の実施形態は、以下で詳細に説明されるように、さまざまなコンピュータハードウェアを含む、特殊用途または汎用のコンピュータを備えることができる。
【００１１】
図１は、本発明の特徴を実施するために使用することができるコンピューティングシステム例１００の概略図を示している。説明されるコンピューティングシステムは、そのような適切なコンピューティングシステムの一例に過ぎず、本発明の使用または機能の範囲に関していかなる限定を意味することも意図していない。また、本発明は、図１に示されるコンポーネントのいずれかまたはそれらの組合せに関連して依存または要件を有するものと解釈すべきでない。
【００１２】
コンピューティングシステムは現在、ますます多種多様な形態をとるようになっている。コンピューティングシステムは、たとえば、ハンドヘルドデバイス、アプライアンス、ラップトップコンピュータ、デスクトップコンピュータ、メインフレーム、または分散コンピューティングシステムであってもよい。本説明および特許請求の範囲において、「コンピューティングシステム」という用語は、少なくとも１つのプロセッサ、およびプロセッサによって実行できるコンピュータ実行可能命令を有することができるメモリを含む任意のデバイスまたはシステム（あるいはそれらの組合せ）を含むものとして広範囲に定義される。メモリは、任意の形態をとることができ、コンピューティングシステムの特性および形態に依存することができる。コンピューティングシステムは、ネットワーク環境を介して分散することができ、多数の構成コンピューティングシステムを含むことができる。
【００１３】
図１を参照すると、その最も基本的な構成において、コンピューティングシステム１００は通常、少なくとも１つの処理装置１０２およびメモリ１０４を含む。メモリ１０４は、揮発性、不揮発性、またはこの２つの組合せであってもよく、１つまたは複数の物理コンピュータ可読メディアを表す。揮発性メモリの例は、ランダムアクセスメモリ（ＲＡＭ）を含む。不揮発性メモリの例は、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリなどを含む。「メモリ」という用語はまた、本明細書において不揮発性大容量記憶装置を示すために使用することもできる。そのような記憶装置は、取り外し可能または固定式であってもよく、ＰＣＭＣＩＡカード、磁気および光ディスク、磁気テープなどを含むことができる（ただし、これらに限定されることはない）。
【００１４】
本明細書において使用されるように、「モジュール」または「コンポーネント」という用語は、コンピューティングシステムで実行するソフトウェアオブジェクトまたはルーチンを示すことができる。本明細書において説明されるさまざまなコンポーネント、モジュール、エンジン、およびサービスは、プロトコルの一環として（たとえば、別個のスレッドとして）コンピューティングシステムで実行するオブジェクトまたはプロセスとして実施することができる。本明細書に説明されるシステムおよび方法はソフトウェアで実施することができるが、ハードウェア、およびソフトウェアとハードウェアの組合せにおける実施もまた可能であり、企図されている。
【００１５】
これ以降の説明において、本発明の実施形態は、１つまたは複数のコンピューティングシステムによって実行される動作（act）を参照して説明される。そのような動作がソフトウェアで実施される場合、動作を実行する関連するコンピューティングシステムの１つまたは複数のプロセッサは、コンピュータ実行可能命令を実行したことに応答してコンピューティングシステムのオペレーションを指示する。そのようなオペレーションの例は、データの操作を伴う。コンピュータ実行可能命令（および操作されたデータ）は、コンピューティングシステム１００のメモリ１０４に格納することができる。
【００１６】
コンピューティングシステム１００はまた、コンピューティングシステム１００が、たとえばネットワーク１１０を介して他のコンピューティングシステムと通信できるようにする通信チャネル１０８も含むことができる。通信チャネル１０８は、通信メディアの例である。通信メディアは通常、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを、搬送波または他のトランスポート機構のような変調データ信号に具現し、任意の情報伝達メディアを含む。たとえば、通信メディアは、有線ネットワークおよび直接配線接続のような有線メディア、ならびに音響、無線、ＲＦ、赤外線などの無線メディアを含むが、これらに限定されることはない。本明細書で使用されるコンピュータ可読メディアという用語は、記憶メディアと通信メディアの両方を含む。
【００１７】
本発明の範囲内の実施形態はまた、コンピュータ実行可能命令またはデータ構造を担持したり格納したりするためのコンピュータ可読メディアも含む。そのようなコンピュータ可読メディアは、汎用または特殊用途のコンピュータによってアクセスできる任意の利用可能なメディアにすることができる。たとえば、そのようなコンピュータ可読メディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたはその他の光ディスクストレージ、磁気ディスクストレージまたはその他の磁気記憶装置、あるいは所望のプログラムコード手段をコンピュータ実行可能命令またはデータ構造の形態で担持したり格納したりするために使用することができ、汎用または特殊用途コンピュータによってアクセスすることができる他のメディアを備えることができるが、これらに限定されない。情報が、ネットワークまたは別の通信接続（ハードワイヤード、無線、またはハードワイヤードもしくは無線の組合せ）を介してコンピュータに転送または提供される場合、コンピュータはその接続をコンピュータ可読メディアと適正に見なす。このように、そのような接続はいずれも、適正にコンピュータ可読メディアと称される。上記の組合せも、コンピュータ可読メディアの範囲内に含まれるべきである。
【００１８】
コンピュータ実行可能命令は、たとえば、汎用コンピュータ、特殊用途コンピュータ、または特殊用途処理装置に、特定の機能または機能のグループを実行させる命令およびデータを備える。この主題は、構造的特徴および／または方法論的動作に固有の言語で説明してきたが、添付の特許請求の範囲において定義される主題は、必ずしも前述の固有の特徴または動作に限定されないことが理解されよう。むしろ、前述の固有の特徴および動作は、特許請求の範囲を実施する例示の形態として開示される。
【００１９】
図２は、本発明の原理が動作することができる環境２００を示す。環境２００は、図１のコンピューティングシステム１００内で実施することができるが、それは必須ではない。図１のコンピューティングシステム１００内で実施することができる場合、環境２００は、システムメモリ内でインスタンス化されるオブジェクトおよびデータ構造を含むことができ、および／または格納されている有効なコンピュータ実行可能命令であってもよい。
【００２０】
リンク可能ライブラリジェネレータ２１０は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せにすることができる。リンク可能ライブラリジェネレータ２１０は、解釈可能コード２０１Ａにアクセスし、その解釈可能コード２０１Ａの関連する構築規則２０２Ａを使用して解釈可能コードのコンパイル可能なリンク可能表現２１１Ａ（コンパイル可能なリンク可能ライブラリ２１１Ａを参照）を形成するコンポーネントである。この説明および特許請求の範囲において、「リンク可能ライブラリ」とは、コンパイル中にオブジェクトをリンクすることができるクラス定義の１つまたは複数の表現のグループである。リンク可能ライブラリジェネレータ２１０は、人間の介入なしに、コンパイル可能なリンク可能ライブラリ２１１Ａを自動的に形成することができるか、またはユーザの介入を許可して人間が形成プロセスに参加できるようにすることができる。リンク可能ライブラリジェネレータ２０１は、１つまたは複数のモジュールを備えることができ、および／またはリンク可能ライブラリ生成に関与しないモジュールの一部を含むことができる。
【００２１】
図３は、本発明の原理の１つの態様による、解釈可能コードの実行時に先立って解釈可能コードのエラー検出を容易にする方法３００の流れ図を示す。方法３００は環境２００において実行することができるので、図３の方法３００は、図２の環境２００を頻繁に参照して説明される。
【００２２】
最初に、リンク可能ライブラリジェネレータ２１０は、解釈可能コマンドにアクセスする（動作３０１）。図２を参照すると、解釈可能コマンドは、解釈可能コード２０１Ａで表現することができる。解釈可能コードは、ネットワークを介して、ローカルストレージから、システムメモリから、またはそれらの任意の組合せからアクセスすることができる。解釈可能コードは、最近またはより遠い過去に構築されたものであってもよく、人間によって作成されたか、またはコンピューティングシステムによって自動的に生成されたものであってもよい。
【００２３】
本発明のさらに広義の原理を明確にするために、解釈可能コマンドの２つの例が示され、この説明全体を通じて使用される。第１の例において、これ以降「第１の実施例」と呼ぶ、解釈可能コマンドは以下の形態をとる。
【００２４】
【表１】
2009524877.tif 000003
【００２５】
この解釈可能コマンドは、コマンドラインツールを使用して許容可能とすることができる。コマンドは、ディレクトリ構造をナビゲートする際に現在の場所を設定する。このコマンドは、現在のディレクトリをｃ：＼ｗｉｎｄｏｗｓディレクトリに設定する。しかし、コマンドラインツールに入力されるのではなく、解釈可能コマンドは、パラメータとしてコンパイル可能コードにプログラム的に入力することができる。たとえば、Ｓｅｔ−ｌｏｃａｔｉｏｎコマンドは、以下のように、プログラム的にＳｈｅｌｌＥｘｅｃｕｔｅコマンドに組み入れることができる。
【００２６】
【表２】
2009524877.tif 000004
【００２７】
これ以降「第２の実施例」と呼ぶ第２の例として、コマンドラインエントリとして表される次の解釈可能コードを考察する。
【００２８】
【表３】
2009524877.tif 000005
【００２９】
コマンドは、パスプロパティで指定されている場所、この場合“ｃ：＼ｗｉｎｄｏｗｓ”のすべてのファイルのリストを取得する。しかし、ここでも同様に、コマンドラインツールに入力するのではなく、解釈可能コマンドは次のように、パラメータとしてコンパイル可能コードにプログラムチックに入力することができる。
【００３０】
【表４】
2009524877.tif 000006
【００３１】
従来より、解釈可能コマンドが即時実行のためにコマンドラインツールに入力されるかどうか、または解釈可能コマンドが他のソースコード（たとえば、ＳｈｅｌｌＥｘｅｃｕｔｅ（“．．．”））内でプログラム的に組み入れられるかどうかにかかわらず、解釈可能コード自体の構造は、実行時まで、つまり解釈可能コードが実行される直前まで評価されない。これが、解釈可能コードの性質である。したがって、解釈可能コードにエラーがあった場合、たとえ解釈可能コードが他のコンパイル可能ソースコードに組み込まれていたとしても、エラーは実行時まで発見されることはない。
【００３２】
本発明の原理に従って、解釈可能なコード自体のコンパイル可能なリンク可能表現が形成される。次いで、コンパイル時に、コンパイル可能なリンク可能表現に基づくオブジェクトを作成し取り込むソースコードを形成することができる。コンパイルされリンクされたオブジェクトは、実行時に、対応する解釈可能コマンドを呼び出す。ソースコードのコンパイルが失敗した場合、解釈可能コマンドを呼び出すソースコードにエラーがある可能性が高い。それらのエラーは、このように、必要に応じて、実行時の十分前に修正することができる。
【００３３】
図２および図３に戻って参照すると、解釈可能コマンド２０１Ａにアクセスすること（動作３０１）に加えて、コンパイルコードジェネレータ２１０はさらに、解釈可能コマンドに対応する構築規則にもアクセスする（動作３０２）。たとえば、構築規則２０２Ａは、解釈可能コマンド２０１Ａに対応することができる。その他の構築規則２０２Ｂは、他の解釈可能コマンド２０１Ｂに対応することができる。
【００３４】
たとえば、“Ｓｅｔ−ｌｏｃａｔｉｏｎ  −ｐａｔｈ‘ｃ：＼ｗｉｎｄｏｗｓ’”の第１の実施例の場合、“Ｓｅｔ−Ｌｏｃａｔｉｏｎ”のコマンドのカテゴリの構築規則にアクセスすることができる。おそらくは、プロパティが必須またはオプションであるかどうか、どれが許容可能な値のタイプおよび／または値であるか（たとえば、テキスト文字列はプロパティ“ｐａｔｈ”に対して許容可能な値のタイプである）、ならびにその他の構築規則にはかかわりなく、これらの構築規則は、コマンドの名称（たとえば、“Ｓｅｔ−ｌｏｃａｔｉｏｎ”）を指定することができ、コマンドのプロパティの適切な名称（たとえば、この場合は“ｐａｔｈ”）をリストすることができる。構築規則は、人間が読み取れる形態で表現することができ、その場合、構築規則は人間によって評価することができる。代替として、構築規則は、たとえば、コンピューティングシステムによって理解されるスキーマに準拠するｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＭＬ）文書などの、コンピュータで読み取れる形態で表現することができる。
【００３５】
同様に、“Ｇｅｔ−ｉｔｅｍ  −ｐａｔｈ‘ｃ：＼ｗｉｎｄｏｗｓ’”の第２の実施例の場合、“Ｇｅｔ−ｉｔｅｍ”のコマンドのカテゴリの構築規則にアクセスすることができる。おそらくはプロパティが必須またはオプションであるかどうか、どれが許容可能な値のタイプおよび／または値であるか（たとえば、テキスト文字列はプロパティ“ｐａｔｈ”に対して許容可能な値のタイプである）などにはかかわりなく、これらの構築規則は、コマンドの名称（たとえば、“Ｇｅｔ−ｉｔｅｍ”）を指定することができ、コマンドのプロパティの適切な名称（たとえば、この場合は“ｐａｔｈ”）をリストすることができる。ここでも同様に、構築規則は、人間が解釈することができ、および／またはコンピュータが解釈することができる。
【００３６】
図２および図３に戻って参照すると、リンク可能ライブラリジェネレータは次に、構築規則を使用して、構築規則に適合する解釈可能コマンドのコンパイル可能なリンク可能表現を形成する（動作３０３）。たとえば、図２において、リンク可能ライブラリジェネレータ２１０は、コンパイル可能なリンク可能ライブラリ２１１Ａを生成する。これは、さまざまな方法で実行することができる。たとえば、手動による方法では、人間の作成者は構築規則を評価することができ、オーサリングツールとしてリンク可能ライブラリジェネレータ２１０を使用して解釈可能コードのコンパイル可能なリンク可能表現を形成することができる。自動化の方法では、リンク可能ライブラリジェネレータ２１０自体が、人間が介入することなく評価およびオーサリングを実行することができる。
【００３７】
完了すると、コンパイル可能なリンク可能表現は、解釈可能コマンドに関連付けられている構造規則に従って構造化される。図３を参照すると、次に、解釈可能コードのコンパイル可能なリンク可能表現は、たとえ解釈可能コードが実行される以前のある時点であったとしても、コンパイルすることができる（動作３０４）。
【００３８】
実行時に先立ついずれの時点においても、コード（たとえば、ソースコード）を形成することができ（動作３０５）、これは、コンパイル時に（動作３０６）、解釈可能コードのコンパイル可能なリンク可能表現に基づきリンクするオブジェクトを形成し取り込む。たとえば、コンパイル可能なリンク可能表現がクラス定義であった場合、ソースコードは、クラス定義によって定義されたクラスのインスタンスであるオブジェクトの形成および取り込みを指示することができる。図２を参照すると、コンパイルコードジェネレータ２２０はコンパイル可能なコード２２１を生成し、次いでこのコードがコンパイラ２３０を使用してコンパイルされて、コンパイルレポート２３１が生成される。ソースコードは、コンピュータによって自動的に生成することができるか、またはユーザ入力に応答して生成することができる。
【００３９】
コンパイルエラーがコンパイルの結果検出されなかった場合、解釈コードは構造的に正常である可能が高く、実行されたときに実行時エラーを発生する可能性は低い。このように、その後のいかなる時点においても、オブジェクトは実行することができ、それにより解釈可能コマンドを呼び出すことができる。コンパイルエラーがコンパイルの結果検出された場合（動作３０７）、解釈可能コマンドを呼び出すオブジェクトを作成したソースコードは、エラーを修正するように変更することができる（動作３０８）。したがって、コンパイル可能コード内のエラーまたはコンパイル可能コード内に組み込まれているエラーを検出して修正するために実行時まで待機するのではなく、実行時よりも十分前に任意のエラーを検出することができる。図３の方法３００は、省略符号２０１Ｂ、２０２Ｂ、および２１１Ｂで表されるように、複数のコマンド、複数の構築規則について、解釈可能コードの複数のコンパイル可能なリンク可能表現で実行することができる。
【００４０】
解釈可能コマンドのコンパイル可能なリンク可能表現がクラス定義である特定の例として、クラス定義のパラメータは、解釈可能コマンドのパラメータをとり、クラス定義に同じ名前のプロパティを設定することによって生成することができる。呼び出しメソッドは、設定されているクラスのプロパティをとるクラス定義に追加することができ、クラスのそれぞれのパラメータに引数としてプロパティの値を使用してコマンドを実行する。クラスは、インスタンス化されてオブジェクトを形成することができ、パラメータのプロパティを、解釈可能コマンドで提供される値に対応する値に設定する。次いで、呼び出しメソッドをコールすることができる。
【００４１】
ここで、解釈可能コマンド“Ｓｅｔ−ｌｏｃａｔｉｏｎ  −ｐａｔｈ‘ｃ：＼ｗｉｎｄｏｗｓ’”がコンパイル可能コードジェネレータ２１０に提供される第１の実施例を参照する。コンパイル可能コードジェネレータは、Ｃ＃骨組みコードを使用して表される以下のクラスを生成することができる。
【００４２】
【表５】
2009524877.tif 000007
【００４３】
実行されるとき、解釈可能な“Ｓｅｔ−ｌｏｃａｔｉｏｎ  −ｐａｔｈ‘ｃ：＼ｗｉｎｄｏｗｓ’”コマンドを呼び出すオブジェクトを生成するソースコードは、第１の実施例において以下のように表すことができる。
【００４４】
【表６】
2009524877.tif 000008
【００４５】
この呼び出しメソッドは、コールされるとき、コンパイル可能なリンク可能表現が生成された解釈可能コマンドを実行し、結果がある場合はそれを返す。
【００４６】
ソースコードが、存在しないパラメータを設定しようと試みる場合、コンパイル時エラーが生じる。たとえば、以下の第２行は、“ＦｕｌｌＮａｍｅ”がクラス“ＳｅｔＬｏｃａｔｉｏｎＣｏｍｍａｎｄ”の定義されたプロパティではないので、コンパイラが実行されたときに失敗の原因となろう。
【００４７】
【表７】
2009524877.tif 000009
【００４８】
第２の実施例において、解釈可能コマンド“Ｇｅｔ−ｉｔｅｍ  −ｐａｔｈ‘ｃ：＼ｗｉｎｄｏｗｓ’”は、擬似コードによって表される以下のクラスに変換される。
【００４９】
【表８】
2009524877.tif 000010
【００５０】
コンパイルされ実行されるとき、クラスのオブジェクトインスタンスをインスタンス化するソースコードを、生成することができる。たとえば、ソースコードは以下のように表すことができる。
【００５１】
【表９】
2009524877.tif 000011
【００５２】
コンパイル時に、ソースコードがコンパイルされ、関連付けられた解釈可能コマンドの構造を定義するクラスにリンクされたので、対応するオブジェクトが実行時にコマンド“Ｇｅｔ−ｉｔｅｍ  −ｐａｔｈ‘ｃ：＼ｗｉｎｄｏｗｓ’”に関連付けられている解釈可能コマンドを正常に実行する可能性がより高いことが認識されよう。ここで、作成者は、代わりに、以下のソースコードを作成したとする。
【００５３】
【表１０】
2009524877.tif 000012
【００５４】
ここで、ユーザは、単に“ｐａｔｈ”を間違えて“ｐ”とタイプした。このソースコードをコンパイルするとき、コンパイラは、“ＧｅｔＩｔｅｍＣｏｍｍａｎｄ”クラスが“ａｔｈ”プロパティを有さないと認識し、それによりコンパイルに失敗する。したがって、コンパイル時の後、ソースコードのエラーは、実行時の十分前に修正することができる。
【００５５】
本発明は、本発明の精神または本質的特徴を逸脱することなく、その他の特定の形態で具現することができる。説明される実施形態は、あらゆる点において、限定的ではなく単に例示的なものとして見なされるべきである。それゆえに、本発明の範囲は、前述の説明によってよりも、添付の特許請求の範囲によって指示される。特許請求の範囲の均等の意味および範囲内にあるすべての変更は、それらの範囲内に包括的にとらえられるものとする。
【図面の簡単な説明】
【００５６】
【図１】本発明の原理を採用することができる適切なコンピューティング環境を示す図である。
【図２】本発明の原理の１つの態様により、コンパイルコードジェネレータが、解釈可能コードの構築規則に基づいて解釈可能コードのコンパイル可能なリンク可能表現を形成する環境を示す図であり、コンパイル可能なリンク可能表現は、必ずしも実行時ではなく、コンパイル時において解釈可能コマンドのコンパイル可能表現の呼び出しのエラーを特定するために使用される。
【図３】本発明の実施形態の１つの態様による、解釈可能コードの実行時に先立つ解釈可能コードのエラー検出を容易にする方法を示す流れ図である。
【図１】
2009524877.tif 000013
【図２】
2009524877.tif 000014
【図３】
2009524877.tif 000015
【国際調査報告】
2009524877.tif 000016
2009524877.tif 000017