JP2011513824A - システム表現およびハンドリング技術 - Google Patents
システム表現およびハンドリング技術 Download PDFInfo
- Publication number
- JP2011513824A JP2011513824A JP2010548175A JP2010548175A JP2011513824A JP 2011513824 A JP2011513824 A JP 2011513824A JP 2010548175 A JP2010548175 A JP 2010548175A JP 2010548175 A JP2010548175 A JP 2010548175A JP 2011513824 A JP2011513824 A JP 2011513824A
- Authority
- JP
- Japan
- Prior art keywords
- implementation
- instance
- data structure
- tool according
- node
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Logic Circuits (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
【代表図】図10
Description
up)であると考えることができる。実装の継承とは、継承ノードのメソッドによる、祖先ノードによって露出される1つ以上のメソッドのオーバーライド(置換)、あるいは、祖先ノードによって露出されるメソッドへの、継承ノード内に表現される新しいメソッドの追加であると考えることができる。
このような操作は、前記候補インスタンスの特定のインスタンス構造要素を何らかの方法でアノテートすることまたは強調することを含んでもよい。コンピュータプログラミング言語で表現される候補コード部分の場合、このことはプログラマに有用となりうる。例えば、プログラマにとって関心のあるコード部分の特定の箇所(例えばエラーを含んでいる部分や、最適化できる部分)を強調することが可能でもよい。
本発明の実施形態の理解をより深めるために、まず、既存のツールについて説明する(その1つとして、TreeCC(http://www.southern-storm.com.au/treecc.html)が知られている)。明らかとなるように、論理構造記述とデータ構造設計とが本発明の重要な態様を形成している。比較のため、これらは、このような既存のツールにおいて使用されている「システム」AST生成の方法にある程度対応している。このため、既存のツールのAST生成の方法の不具合を理解するために、これらについて(TreeCCにおいて使用されているものに着目して)考察する。
本発明者は、前述のシステムは、対象のプログラミング言語(システム)の論理構造(AST)の記述と、データ構造の形での当該システムの実装との間に比較的直接的な変換を使用することを認識している。この結果、このようなシステムは、柔軟性と簡潔性を欠いている傾向がある。このため、これらの解決策のユーザは、柔軟性を改善するために、あるレベルの型安全性を犠牲にすることを強いられている。
本実施形態は、コンピュータプログラミング言語の場合、好ましくはシステムの実装を生成するソフトウェアツールの形で提供される。このような実施形態は、関連する言語を表現し、ノード間のリンクが、実装およびインタフェースではなく代替可能性の継承を表わす第1のデータ構造(「システム」AST)の記述を入力として取る。このような実施形態は、この入力から、第2のデータ構造(「システム」AST)と実装規則とを有するシステムの実装を生成する。第2のデータ構造では、ルートノード以外のノードは、ルートノードから直接継承する。実装規則は、第2のデータ構造のインスタンス(コード部分)と共に使用するために、第1のデータ構造において固有の代替可能性関係を特定する。また、本実施形態は、このように生成された実装を使用して、第2のデータ構造のインスタンス(コード部分)をハンドリングするソフトウェアツール(例えばパーサまたはコンパイラ)の形でも提供される。
第1のデータ構造記述(システムAST記述)は、BLのインスタンス(すなわち候補コード部分)を最終的にハンドリングできるようにするためのBLの論理構造の記であると考えることができる。本発明の実施形態において利用されるこのような(AST)記述の特性により、このような論理構造を、「代替可能性の模倣多重継承」と「複数型参照」の各特徴を提供する高水準の記述によって記述できるようになる。これらの機能のそれぞれについては以下で詳述する。次に、これらの特徴が、FILで利用可能な何らかの機能を使用して、第1のデータ構造(BLを実装するために効力がある)の実装に使用される実装(第2のデータ構造および実装規則)にエンコードされる。
parent connections to a node)に現れない。
本発明の実施形態の原理を実現する、すなわち、特定の言語(BL)で記述された候補コード部分を効率的にハンドリング(理解/解析/操作/強化されるなど)するために、候補コード部分(「インスタンス」AST)の表現が生成される。このような「インスタンス」ASTを生成するために、上記の第1のデータ構造記述の実装が使用され、以下の説明は、この実装(より詳細には、第2のデータ構造および実装規則を含む)に関する。
more()−反復子が生成すべき更に別のノードを有する場合、真を返す。
node()−反復子が現在居るノードへの参照を返す。
next()−ウォーク時に、反復子がサポートする特定のウォーク順序の決定(最も一般的なのは前順ウォークである)に従って、反復子を次のノードに進める。
以下に説明するように、本システム(単に本発明の一実施形態のみにすぎない「本システム」)が、ルートノードから直接継承するように第2のデータ構造(ルートノード以外の)の全ノードを構成し、元の第1のデータ構造記述に指定されている型規則(実装規則)を再導入するために型チェックメカニズムを実装することによって、記述された論理構造(第1のデータ構造)を実装できることにより、柔軟性および堅固性の点で多くの利点が得られる。
BL specification)。変更されていないソースコードが、「メタ拡張」ソースコードと全く同様に扱われるため、このような方式は、プログラミングコミュニティ内での現実的な採用/理解にとって重要であることが考察される。
(付記1)
構文規則の組を満たす複数の構文的要素を有するコンピュータプログラミング言語の少なくとも一部を表わす第1のデータ構造の実装を生成するための実装ツールであって、前記第1のデータ構造は、複数のリンクされたノードを有し、前記ノードはルートノードと、前記ルートノードに直接リンクされた複数の第1階層ノードと、1つ以上の他の前記ノードを介して前記ルートノードに間接的にリンクされた複数の下層ノードと、を有し、前記ノードは、前記言語のこのような構文的要素と、このような構文規則を表現する前記ノードの間のリンクとを表わし、前記ツールは、
前記第1のデータ構造またはその記述を受け取るように動作可能な第1のデータ構造入力手段と、
前記第1のデータ構造の実装を生成するように動作可能な処理手段と、を有し、前記実装は、
前記第1のデータ構造に対応する第2のデータ構造またはその記述であって、前記第1のデータ構造の前記ノードに対応するノードを有し、そのルートノード以外のノードが、前記第2のデータ構造の前記ルートノードに直接リンクされている第2のデータ構造と、
前記第1のデータ構造によって表現された前記構文規則への準拠を確立するために、前記実装を利用するその後の処理操作中に、前記第2のデータ構造のノードに関連して強制される前記第1のデータ構造の前記構文規則を定義する実装規則と、を有する実装ツール。
前記第1のデータ構造は、少なくとも部分的に抽象構文ツリーなどの不均一なツリー構造である付記1に記載の実装ツール。
前記第1のデータ構造は、少なくとも部分的に有向非巡回グラフ構造である付記1または2に記載の実装ツール。
前記言語は多数のトークンから構成され、前記言語の各前記構文的要素は、前記トークンの群あるいは前記トークンの所定の組合せを表わす上記付記のいずれか1項に記載の実装ツール。
前記第1のデータ構造の前記ノード間の前記リンクは、該ノードの間の実装およびインタフェースではなく代替可能性の継承の経路を表わす上記付記のいずれか1項に記載の実装ツール。
前記第2のデータ構造の前記ノード間の前記リンクは、該ノードの間の代替可能性、実装およびインタフェースの継承の経路を表わす上記付記のいずれか1項に記載の実装ツール。
前記第1のデータ構造によって表わされる代替可能性関係への準拠を確立するために、前記実装規則は、前記実装を利用するその後の処理操作中に前記第2のデータ構造のノードに関連して強制される代替可能性の規則を定義する上記付記のいずれか1項に記載の実装ツール。
前記第1のデータ構造は、言語拡張を表わす更に別のリンクされたノードを有し、前記言語拡張は前記コンピュータプログラミング言語に対する拡張である上記付記のいずれか1項に記載の実装ツール。
前記第1のデータ構造の前記更に別のノードは、前記言語拡張のそれぞれの構文的要素を表現する付記8に記載の実装ツール。
(付記10)
前記実装規則は、前記第1のデータ構造によって表わされる前記第1のデータ構造の前記1つ以上の更に別のノードの前記代替可能性関係への準拠を確立するために、前記実装を利用するその後の処理操作中に、前記受け取った第1のデータ構造の前記1つ以上の更に別のノードに対応する前記第2のデータ構造のノードに関連して強制される代替可能性の規則を定義する付記8〜10のいずれか1項に記載の実装ツール。
前記言語拡張は、前記コンピュータプログラミング言語以外の言語の一部または全体である付記8〜11のいずれか1項に記載の実装ツール。
構文規則の組を満たす複数の構文的要素を有するコンピュータプログラミング言語の少なくとも一部を表わす第1のデータ構造の実装を生成するための方法であって、前記第1のデータ構造は、複数のリンクされたノードを有し、前記ノードはルートノードと、前記ルートノードに直接リンクされた複数の第1階層ノードと、1つ以上の他の前記ノードを介して前記ルートノードに間接的にリンクされた複数の下層ノードと、を有し、前記ノードは、前記言語のこのような構文的要素と、このような構文規則を表現する前記ノードの間のリンクとを表わし、前記方法は、
前記第1のデータ構造またはその記述を受け取るステップと、
前記第1のデータ構造の実装を生成するステップと、を有し、前記実装は、
前記第1のデータ構造に対応する第2のデータ構造またはその記述であって、前記第1のデータ構造の前記ノードに対応するノードを有し、そのルートノード以外のノードが、前記第2のデータ構造の前記ルートノードに直接リンクされている第2のデータ構造と、
前記第1のデータ構造によって表現された前記構文規則への準拠を確立するために、前記実装を利用するその後の処理操作中に、前記第2のデータ構造のノードに関連して強制される前記第1のデータ構造の前記構文規則を定義する実装規則と、を有する実装方法。
コンピューティングデバイスで実行されたときに、前記コンピューティングデバイスに付記13に記載の方法を実行させる実装コンピュータプログラム。
付記1〜12のいずれか1項に記載の実装ツールによって生成される前記実装の前記第2のデータ構造のインスタンスに動作するためのインスタンスハンドリングツールであって、
前記実装を記憶する手段と、
前記実装に依存して前記候補インスタンスに動作するための手段と、を有し、前記候補インスタンスは、前記第2のデータ構造のノードに対応するインスタンスノードを含むインスタンスハンドリングツール。
前記第2のデータ構造の前記候補インスタンスを、そのインスタンスノードおよびその間のリンクが明示的に表現されていない入力形式で受け取るための手段と、
前記受け取った候補インスタンスを、前記インスタンスノードおよびその間のリンクが明示的に表現されている抽象化形式に変換するための変換手段と、を更に有する付記15に記載のインスタンスハンドリングツール。
前記候補インスタンスは、前記コンピュータプログラミング言語内で表現されたコード部分であり、
前記入力形式は、前記コード部分のテキスト版であり、
前記抽象化形式は、前記コード部分の抽象構文ツリーまたはグラフ版である付記16に記載のインスタンスハンドリングツール。
前記候補インスタンスの視覚的表現を生成するように動作可能な可視化手段を更に有する付記15〜17のいずれか1項に記載のインスタンスハンドリングツール。
少なくとも付記16に付加して解釈される場合に、前記可視化手段は、前記候補インスタンスの視覚的表現を前記抽象化形式で生成するように動作可能である付記18に記載のインスタンスハンドリングツール。
前記実装に依存して前記候補インスタンスを操作するように動作可能な操作手段を更に有する付記15〜19のいずれか1項に記載のインスタンスハンドリングツール。
少なくとも付記16に付加して解釈される場合に、前記操作手段は、前記候補インスタンスを前記抽象化形式で操作するように動作可能である付記20に記載のインスタンスハンドリングツール。
前記操作手段は、前記実装と照らし合わせてこのような操作を検証し、前記第2のデータ構造および/または前記実装規則に違反する操作を禁止するように動作可能である付記20または21に記載のインスタンスハンドリングツール。
前記操作手段は、前記第2のデータ構造および前記実装規則を遵守する操作を許可するように動作可能である付記22に記載のインスタンスハンドリングツール。
このような操作は、前記候補インスタンスを増やすおよび/または前記候補インスタンスを減らすことを含む付記20〜23のいずれか1項に記載のインスタンスハンドリングツール。
このような操作は、前記候補インスタンスに新しいインスタンスノードを追加することを含む付記20〜24のいずれか1項に記載のインスタンスハンドリングツール。
このような操作は、前記候補インスタンスからインスタンスノードを削除することを含む付記24または25に記載のインスタンスハンドリングツール。
このような操作は、前記候補インスタンスの特定のインスタンスノードをアノテートすることを含む付記24〜26のいずれか1項に記載のインスタンスハンドリングツール。
このような操作は、前記候補インスタンスの一部または全体に所定のプロセスを実行することを含む付記20〜27のいずれか1項に記載のインスタンスハンドリングツール。
前記所定のプロセスは、前記インスタンスハンドリングツールによってアクセス可能な、コンピュータプログラムなどのアクションの組内に定義される付記28に記載のインスタンスハンドリングツール。
前記所定のプロセスは、所定の目的のために前記候補インスタンスを最適化するように動作可能な最適化プロセスである付記28または29に記載のインスタンスハンドリングツール。
前記操作手段は、前記候補インスタンスの前記インスタンスノードに依存してこのような操作を実行するように動作可能である付記20〜30のいずれか1項に記載のインスタンスハンドリングツール。
前記操作手段は、インスタンスノードの特定の型を識別し、前記識別されたインスタンスノードに依存してこのような操作を実行するように動作可能である付記31に記載のインスタンスハンドリングツール。
前記実装および前記第2のデータ構造は、付記8〜12のいずれか1項に記載の実装ツールによって生成される前記実装および前記第2のデータ構造であり、
インスタンスノードの前記特定の型は、前記言語拡張の前記更に別のノードのインスタンスノードである付記32に記載のインスタンスハンドリングツール。
前記実装および前記第2のデータ構造は、付記8〜12のいずれか1項に記載の実装ツールによって生成される前記実装および前記第2のデータ構造であり、
前記候補インスタンスは、前記言語拡張に由来する部分を含む付記15〜33のいずれか1項に記載のインスタンスハンドリングツール。
少なくとも付記16に付加して解釈される場合に、前記変換手段は第1の変換手段であり、前記インスタンスハンドリングツールは、前記抽象化形式の前記候補インスタンスをその対応する入力形式に変換するように動作可能な第2の変換手段を更に有する付記15〜34のいずれか1項に記載のインスタンスハンドリングツール。
少なくとも付記20に付加して解釈される場合に、前記第2の変換手段は、このような操作が前記候補インスタンスに実行される前にあるいはその後に、このような変換を実行するように動作可能である付記35に記載のインスタンスハンドリングツール。
少なくとも付記20に付加して解釈される場合に、
前記候補インスタンスは、前記コンピュータプログラミング言語内で表現されたコード部分であり、
前記インスタンスハンドリングツールは、このような操作の前か後に、前記候補インスタンスをオブジェクトコードとして出力するように動作可能な手段を有する付記15〜36のいずれか1項に記載のインスタンスハンドリングツール。
パーサまたはコンパイラである付記37に記載のインスタンスハンドリングツール。
付記1〜12のいずれかの1項に記載の実装ツールによって生成される前記実装の前記第2のデータ構造のインスタンスに動作するためのインスタンスハンドリング方法であって、前記方法は、前記実装に依存して前記候補インスタンスに動作するステップを有し、前記候補インスタンスは、前記第2のデータ構造のノードに対応するインスタンスノードを含む方法。
コンピューティングデバイスで実行されたときに、前記コンピューティングデバイスに付記39に記載の方法を実行させるインスタンスハンドリングコンピュータプログラム。
コンピュータプログラミング言語を拡張する方法であって、
前記言語の少なくとも一部を表わす第1のデータ構造またはその記述を取得するステップと、
言語拡張を表わす更に別のリンクされたノードを含むように、前記第1のデータ構造またはその前記記述を適応させるステップと、
前記適応された第1のデータ構造の実装を生成するために、付記8〜12のいずれか1項に記載の実装ツールを使用するステップと、を有する方法。
付記1〜12のいずれか1項に記載の実装ツールおよび/または付記15〜38のいずれか1項に記載のインスタンスハンドリングツールを有するパーサまたはコンパイラ。
コンピュータプログラムを生成あるいは適応させる方法であって、
前記コンピュータプログラミング言語の少なくとも前記一部で表現された候補コンピュータプログラムを、前記候補インスタンスとして、付記15〜38のいずれか1項に記載のインスタンスハンドリングツールに入力するステップと、
前記候補インスタンスに動作するために前記インスタンスハンドリングツールを使用するステップと、
このような操作から得られるコンピュータプログラムを出力するために前記インスタンスハンドリングツールを使用するステップと、を有し、前記出力されるコンピュータプログラムは、このように生成または適応されたコンピュータプログラムである方法。
付記1〜12のいずれか1項に記載の実装ツールおよび/または付記15〜38のいずれか1項に記載のインスタンスハンドリングツールとして機能するように構成されたコンピュータまたはコンピュータのネットワーク。
付記1〜12のいずれか1項に記載の実装ツールおよび/または付記15〜38のいずれか1項に記載のインスタンスハンドリングツールを有するメタプログラミングツール。
Claims (57)
- 複数のリンクされた構造要素を有し、所定のシステムの意味のある要素および該意味のある要素間の相互関連性の親の集合を表わす第1のデータ構造の実装を生成するための実装ツールであって、
前記第1のデータ構造またはその記述を受け取るように動作可能な第1のデータ構造入力手段と、
受け取った前記第1のデータ構造の実装を生成するように動作可能な処理手段と、を有し、前記実装は、
前記第1のデータ構造に対応し、前記相互関連性の親の集合の部分集合によって定義される第2のデータ構造またはその記述と、
前記実装を利用するその後の処理操作中に前記相互関連性の親の集合を強制させることを可能にする実装規則と、を有する実装ツール。 - 前記構造要素は、前記システムのそれぞれの意味のある要素を表わす請求項1に記載の実装ツール。
- 前記システムは言語または言語の一部である請求項1または2に記載の実装ツール。
- 前記言語はコンピュータプログラミング言語である請求項3に記載の実装ツール。
- 前記第1のデータ構造は、少なくとも部分的に抽象構文ツリーなどの不均一なツリー構造であり、前記構造要素の一部または全ては、前記ツリー構造のリンクされたノードである請求項1〜4のいずれか1項に記載の実装ツール。
- 前記第1のデータ構造は、少なくとも部分的に有向非巡回グラフ構造であり、前記構造要素の一部または全ては前記グラフ構造のリンクされたノードである請求項5に記載の実装ツール。
- 前記システムは、構文規則の組を満たす複数の構文的要素を有し、前記ノードは前記構文的要素を表わし、前記リンクは前記構文規則を表わす請求項5または6に記載の実装ツール。
- 前記システムは複数のトークンから構成され、各前記構文的要素は、前記トークンの群あるいは前記トークンの所定の組合せを表わす請求項7に記載の実装ツール。
- 前記第1のデータ構造の前記構造要素は、ルート構造要素と、前記ルート構造要素に直接リンクされた複数の第1層構造要素と、1つ以上の他の前記構造要素を介して前記ルート構造要素に間接的にリンクされた複数の下層構造要素と、を有する請求項1〜8のいずれか1項に記載の実装ツール。
- 前記第1のデータ構造の前記構造要素間の前記リンクは、該構造要素の間の実装およびインタフェースではなく代替可能性の継承の経路を表わす請求項1〜9のいずれか1項に記載の実装ツール。
- 前記第2のデータ構造は、前記第1のデータ構造の前記構造要素に対応する構造要素を有する請求項1〜10のいずれか1項に記載の実装ツール。
- 請求項5または6に付加して解釈される場合に、前記第2のデータ構造は、前記第1のデータ構造の前記ノードに対応するノードを有する請求項1〜11のいずれか1項に記載の実装ツール。
- 前記第2のデータ構造の前記構造要素は、ルート構造要素を有し、前記第2のデータ構造の前記他の構造要素は、前記ルート構造要素に直接リンクされている請求項1〜12のいずれか1項に記載の実装ツール。
- 前記第2のデータ構造の前記構造要素間の前記リンクは、該構造要素の間の代替可能性、実装およびインタフェースの継承の経路を表わす請求項1〜13のいずれか1項に記載の実装ツール。
- 前記第1のデータ構造によって表わされる代替可能性関係への準拠を確立するために、前記実装規則は、前記実装を利用するその後の処理操作中に前記第2のデータ構造の構造要素に関連して強制される前記代替可能性の規則を定義する請求項1〜14のいずれか1項に記載の実装ツール。
- 前記第1のデータ構造は、更に別のリンクされた構造要素を有し、システム拡張を表わし、前記システム拡張は、前記システムに対する拡張である請求項1〜15のいずれか1項に記載の実装ツール。
- 前記第1のデータ構造の前記更に別の構造要素は、前記システム拡張のそれぞれの意味のある要素を表わす請求項16に記載の実装ツール。
- 前記第1のデータ構造の前記更に別の構造要素の1つ以上は、前記第1のデータ構造の前記他の構造要素の一部もしくは全部に対して代替可能として定義される請求項16または17に記載の実装ツール。
- 前記実装規則は、前記第1のデータ構造によって表わされる前記第1のデータ構造の前記1つ以上の更に別の構造要素の前記代替可能性関係への準拠を確立するために、前記実装を利用するその後の処理操作中に、前記第1のデータ構造の前記1つ以上の更に別の構造要素に対応する前記第2のデータ構造の構造要素に関連して強制される代替可能性の規則を定義する請求項16〜18のいずれか1項に記載の実装ツール。
- 請求項3または4に付加して解釈される場合に、前記システム拡張は前記言語に対する拡張である請求項16〜19のいずれか1項に記載の実装ツール。
- 前記システム拡張は別の言語の一部または全体である請求項20に記載の実装ツール。
- 複数のリンクされた構造要素を有し、所定のシステムの意味のある要素および該意味のある要素間の相互関連性の親の集合を表わす第1のデータ構造の実装を生成するための実装方法であって、
前記第1のデータ構造またはその記述を受け取るステップと、
前記受け取った第1のデータ構造の実装を生成するステップと、を有し、前記実装は、
前記第1のデータ構造に対応し、前記相互関連性の親の集合の部分集合によって定義される第2のデータ構造またはその記述と、
前記実装を利用するその後の処理操作中に前記相互関連性の親の集合を強制させることを可能にする実装規則と、を有する実装方法。 - コンピューティングデバイスで実行されたときに、前記コンピューティングデバイスに請求項22に記載の方法を実行させる実装コンピュータプログラム。
- 請求項1〜21のいずれか1項に記載の実装ツールによって生成される前記実装の前記第2のデータ構造のインスタンスに動作するためのインスタンスハンドリングツールであって、
前記実装を記憶する手段と、
前記実装に依存して前記候補インスタンスに動作するための手段と、を有するインスタンスハンドリングツール。 - 前記候補インスタンスは、前記第2のデータ構造の前記構造要素に対応するインスタンス構造要素を有する請求項24に記載の実装ツール。
- 前記ツールは、
前記第2のデータ構造の前記候補インスタンスを、そのインスタンス構造要素およびその間のリンクが明示的に表現されていない入力形式で受け取るための手段と、
前記受け取った候補インスタンスを、前記インスタンス構造要素およびこれらの間のリンクが明示的に表現されている抽象化形式に変換するための変換手段と、を有する請求項25に記載の実装ツール。 - 前記システムは、コンピュータプログラミング言語であり、
前記候補インスタンスは、前記コンピュータプログラミング言語内で表現されたコード部分であり、
前記入力形式は、前記コード部分のテキスト版であり、
前記抽象化形式は、前記コード部分の抽象構文ツリーまたはグラフ版である請求項26に記載の実装ツール。 - 前記候補インスタンスの視覚的表現を生成するように動作可能な可視化手段を更に有する請求項24〜27のいずれか1項に記載のインスタンスハンドリングツール。
- 少なくとも請求項26に付加して解釈される場合に、前記可視化手段は、前記候補インスタンスの視覚的表現を前記抽象化形式で生成するように動作可能である請求項28に記載のインスタンスハンドリングツール。
- 前記実装に依存して前記候補インスタンスを操作するように動作可能な操作手段を更に有する請求項24〜29のいずれか1項に記載のインスタンスハンドリングツール。
- 少なくとも請求項26に付加して解釈される場合に、前記操作手段は、前記候補インスタンスを前記抽象化形式で操作するように動作可能である請求項30に記載のインスタンスハンドリングツール。
- 前記操作手段は、前記実装と照らし合わせてこのような操作を検証し、前記第2のデータ構造および/または前記実装規則に違反する操作を禁止するように動作可能である請求項30または31に記載のインスタンスハンドリングツール。
- 前記操作手段は、前記第2のデータ構造および前記実装規則を遵守する操作を許可するように動作可能である請求項32に記載のインスタンスハンドリングツール。
- このような操作は、前記候補インスタンスを増やすおよび/または前記候補インスタンスを減らすことを含む請求項30〜33のいずれか1項に記載のインスタンスハンドリングツール。
- 請求項25に付加して解釈される場合に、このような操作は、前記候補インスタンスに新しいインスタンス構造要素を追加することを含む請求項30〜34のいずれか1項に記載のインスタンスハンドリングツール。
- 請求項25に付加して解釈される場合に、このような操作は、前記候補インスタンスからインスタンス構造要素を削除することを含む請求項34または35に記載のインスタンスハンドリングツール。
- 請求項25に付加して解釈される場合に、このような操作は、前記候補インスタンスの特定のインスタンス構造要素をアノテートすることを含む請求項34〜36のいずれか1項に記載のインスタンスハンドリングツール。
- このような操作は、前記候補インスタンスの一部または全体に所定のプロセスを実行することを含む請求項30〜37のいずれか1項に記載のインスタンスハンドリングツール。
- 前記所定のプロセスは、前記インスタンスハンドリングツールによってアクセス可能な、コンピュータプログラムなどのアクションの組内に定義される請求項38に記載のインスタンスハンドリングツール。
- 前記所定のプロセスは、所定の目的のために前記候補インスタンスを最適化するように動作可能な最適化プロセスである請求項38または39に記載のインスタンスハンドリングツール。
- 請求項25に付加して解釈される場合に、前記操作手段は、前記候補インスタンスの前記インスタンス構造要素に依存してこのような操作を実行するように動作可能である請求項30〜40のいずれか1項に記載のインスタンスハンドリングツール。
- 前記操作手段は、インスタンス構造要素の特定の型を識別し、前記識別されたインスタンス構造要素に依存してこのような操作を実行するように動作可能である請求項41に記載のインスタンスハンドリングツール。
- 前記実装および前記第2のデータ構造は、請求項16〜21のいずれか1項に記載の実装ツールによって生成される前記実装および前記第2のデータ構造であり、
インスタンス構造要素の前記特定の型は、前記言語拡張の前記更に別の構造要素のインスタンス構造要素ノードである請求項42に記載の実装ツール。 - 前記実装および前記第2のデータ構造は、請求項16〜21のいずれか1項に記載の実装ツールによって生成される前記実装および前記第2のデータ構造であり、
前記候補インスタンスは、前記システム拡張に由来する部分を含む請求項24〜43のいずれか1項に記載の実装ツール。 - 少なくとも請求項26に付加して解釈される場合に、前記変換手段は第1の変換手段であり、前記インスタンスハンドリングツールは、前記抽象化形式の前記候補インスタンスをその対応する入力形式に変換するように動作可能な第2の変換手段を更に有する請求項24〜44のいずれか1項に記載のインスタンスハンドリングツール。
- 少なくとも請求項30に付加して解釈される場合に、前記第2の変換手段は、このような操作が前記候補インスタンスに実行される前にあるいはその後に、このような変換を実行するように動作可能である請求項45に記載のインスタンスハンドリングツール。
- 少なくとも請求項30に付加して解釈される場合に、
前記システムは、コンピュータプログラミング言語であり、
前記候補インスタンスは、前記コンピュータプログラミング言語内で表現されたコード部分であり、
前記インスタンスハンドリングツールは、このような操作の前か後に、前記候補インスタンスをオブジェクトコードとして出力するように動作可能な手段を有する請求項24〜46のいずれか1項に記載のインスタンスハンドリングツール。 - パーサまたはコンパイラである請求項47に記載のインスタンスハンドリングツール。
- 請求項1〜21のいずれか1項に記載の実装ツールによって生成される前記実装の前記第2のデータ構造のインスタンスに動作するためのインスタンスハンドリング方法であって、前記実装に依存して前記候補インスタンスに動作するステップを有するインスタンスハンドリング方法。
- コンピューティングデバイスで実行されたときに、前記コンピューティングデバイスに請求項49に記載の方法を実行させるインスタンスハンドリングコンピュータプログラム。
- システムの拡張方法であって、
前記システムを表わす第1のデータ構造またはその記述を取得するステップと、
システム拡張を表わす更に別のリンクされた構造要素を含むように、前記第1のデータ構造またはその前記記述を適応させるステップと、
前記適応された第1のデータ構造の実装を生成するために、請求項16〜21のいずれか1項に記載の実装ツールを使用するステップと、を有する方法。 - 請求項1〜21のいずれか1項に記載の実装ツールおよび/または請求項24〜48のいずれか1項に記載のインスタンスハンドリングツールを有するパーサまたはコンパイラ。
- 請求項1〜21のいずれか1項に記載の実装ツールおよび/または請求項24〜48のいずれか1項に記載のインスタンスハンドリングツールによって生成あるいは適応されたコンピュータプログラム。
- コンピュータプログラムを生成あるいは適応させる方法であって、
候補コンピュータプログラムを、前記候補インスタンスとして請求項24〜48のいずれか1項に記載のインスタンスハンドリングツールに入力させ、対象前記のシステムは、前記候補コンピュータプログラムを表現しているコンピュータプログラミング言語であるステップと、
前記候補インスタンスに動作するために前記インスタンスハンドリングツールを使用するステップと、
このような操作から得られるコンピュータプログラムを出力するために前記インスタンスハンドリングツールを使用するステップと、を有する方法。 - 請求項1〜21のいずれか1項に記載の実装ツールおよび/または請求項24〜48のいずれか1項に記載のインスタンスハンドリングツールとして機能するように構成されたコンピュータまたはコンピュータのネットワーク。
- 請求項1〜21のいずれか1項に記載の実装ツールおよび/または請求項24〜48のいずれか1項に記載のインスタンスハンドリングツールを有するメタプログラミングツール。
- 添付の図面を参照して実質的に上記したツール、方法、コンピュータプログラム、コンピュータまたはコンピュータのネットワーク。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3254708P | 2008-02-29 | 2008-02-29 | |
EP08152165A EP2096534A1 (en) | 2008-02-29 | 2008-02-29 | System representation and handling techniques |
US61/032,547 | 2008-02-29 | ||
EP08152165.0 | 2008-02-29 | ||
PCT/GB2009/000552 WO2009106843A2 (en) | 2008-02-29 | 2009-02-27 | System representation and handling techniques |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011513824A true JP2011513824A (ja) | 2011-04-28 |
JP5600301B2 JP5600301B2 (ja) | 2014-10-01 |
Family
ID=40674215
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010548175A Active JP5600301B2 (ja) | 2008-02-29 | 2009-02-27 | システム表現およびハンドリング技術 |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP5600301B2 (ja) |
CA (1) | CA2714189C (ja) |
WO (1) | WO2009106843A2 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013111490A1 (ja) | 2012-01-25 | 2013-08-01 | ソニー株式会社 | 情報処理装置、情報処理方法およびコンピュータプログラム |
WO2013150872A1 (ja) | 2012-04-06 | 2013-10-10 | ソニー株式会社 | 情報処理装置、情報処理方法およびコンピュータプログラム |
US9262128B2 (en) | 2011-07-08 | 2016-02-16 | Sony Corporation | Information processing apparatus, information processing method and computer program |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05173772A (ja) * | 1991-12-25 | 1993-07-13 | Toshiba Corp | 統一内部モデルに対する複数ビュー表示システムの構築方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5488727A (en) * | 1991-09-30 | 1996-01-30 | International Business Machines Corporation | Methods to support multimethod function overloading with compile-time type checking |
-
2009
- 2009-02-27 WO PCT/GB2009/000552 patent/WO2009106843A2/en active Application Filing
- 2009-02-27 JP JP2010548175A patent/JP5600301B2/ja active Active
- 2009-02-27 CA CA2714189A patent/CA2714189C/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05173772A (ja) * | 1991-12-25 | 1993-07-13 | Toshiba Corp | 統一内部モデルに対する複数ビュー表示システムの構築方法 |
Non-Patent Citations (5)
Title |
---|
CSNG200401895008; 小藤哲彦、河野健二、竹内郁雄: '¬<><∪∪(notavaCC):オブジェクト指向抽象構文木を生成するコンパイラ・コンパイラ' 情報処理学会論文誌 第44巻,No.SIG13(PRO18), 20031015, pp.84〜99, 社団法人情報処理学会 * |
CSNG200600650008; 中田育男、渡邊 坦: '連載 21世紀のコンパイラ道しるべ 2:HIRの説明と簡単な言語のフロントエンド' 情報処理 第47巻,第5号, 20060515, pp.526〜539, 社団法人情報処理学会 * |
JPN5011011318; Rhys Weatherley: 'Treecc: An Aspect-Oriented Approach to Writing Compilers' Free Software Magazine[ONLINE] , 2002 * |
JPN6013038880; 中田育男、渡邊 坦: '連載 21世紀のコンパイラ道しるべ 2:HIRの説明と簡単な言語のフロントエンド' 情報処理 第47巻,第5号, 20060515, pp.526〜539, 社団法人情報処理学会 * |
JPN6013038881; 小藤哲彦、河野健二、竹内郁雄: '¬<><∪∪(notavaCC):オブジェクト指向抽象構文木を生成するコンパイラ・コンパイラ' 情報処理学会論文誌 第44巻,No.SIG13(PRO18), 20031015, pp.84〜99, 社団法人情報処理学会 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9262128B2 (en) | 2011-07-08 | 2016-02-16 | Sony Corporation | Information processing apparatus, information processing method and computer program |
WO2013111490A1 (ja) | 2012-01-25 | 2013-08-01 | ソニー株式会社 | 情報処理装置、情報処理方法およびコンピュータプログラム |
US9372985B2 (en) | 2012-01-25 | 2016-06-21 | Sony Corporation | Information processing device, information processing method, and computer program |
WO2013150872A1 (ja) | 2012-04-06 | 2013-10-10 | ソニー株式会社 | 情報処理装置、情報処理方法およびコンピュータプログラム |
Also Published As
Publication number | Publication date |
---|---|
CA2714189C (en) | 2016-10-18 |
WO2009106843A3 (en) | 2010-01-21 |
WO2009106843A2 (en) | 2009-09-03 |
JP5600301B2 (ja) | 2014-10-01 |
CA2714189A1 (en) | 2009-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8516458B2 (en) | System representation and handling techniques | |
Schordan et al. | A source-to-source architecture for user-defined optimizations | |
US5761511A (en) | Method and apparatus for a type-safe framework for dynamically extensible objects | |
Syme et al. | Expert F♯ | |
Havlak | Interprocedural symbolic analysis | |
JP2012504826A (ja) | 拡張可能な構文を有するプログラミング言語 | |
US7937694B2 (en) | Fast flattening of nested streams | |
Izmaylova et al. | Practical, general parser combinators | |
Pawlak et al. | Spoon: Program analysis and transformation in java | |
van Binsbergen et al. | Executable component-based semantics | |
EP2096534A1 (en) | System representation and handling techniques | |
Boshernitsan | Harmonia: A flexible framework for constructing interactive language-based programming tools | |
JP5600301B2 (ja) | システム表現およびハンドリング技術 | |
Engler | Interface compilation: Steps toward compiling program interfaces as languages | |
Porkoláb | Functional programming with C++ template metaprograms | |
van Der Storm et al. | Object grammars: Compositional and bidirectional mapping between text and graphs | |
Ferrarotti et al. | Stepwise abstraction of high-level system specifications from source code | |
Nakamaru et al. | Generating fluent embedded domain-specific languages with subchaining | |
Kalleberg et al. | Fusing a transformation language with an open compiler | |
Ike-Nwosu | Inside the Python Virtual Machine | |
Dillig et al. | SAIL: Static analysis intermediate language with a two-level representation | |
Nupponen | The design and implementation of a graph rewrite engine for model transformations | |
Irwin | Understanding and improving object-oriented software through static software analysis | |
Graf | Compiler backend generation using the VADL processor description language | |
Coffman | Bridging Intermediate Representations to Achieve Hardware Design Language Translation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120127 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120511 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130725 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130813 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140415 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140711 |
|
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: 20140805 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140815 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5600301 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |