JPS6288033A - ソフトウエアプログラムを生成するための装置及びその方法 - Google Patents
ソフトウエアプログラムを生成するための装置及びその方法Info
- Publication number
- JPS6288033A JPS6288033A JP61238162A JP23816286A JPS6288033A JP S6288033 A JPS6288033 A JP S6288033A JP 61238162 A JP61238162 A JP 61238162A JP 23816286 A JP23816286 A JP 23816286A JP S6288033 A JPS6288033 A JP S6288033A
- Authority
- JP
- Japan
- Prior art keywords
- generic
- software
- statements
- indirect
- statement
- 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
- 238000000034 method Methods 0.000 title claims description 20
- 230000004044 response Effects 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims 2
- 238000012544 monitoring process Methods 0.000 claims 2
- 238000005227 gel permeation chromatography Methods 0.000 description 72
- 230000008569 process Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 239000003607 modifier Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- DOMWKUIIPQCAJU-LJHIYBGHSA-N Hydroxyprogesterone caproate Chemical compound C1CC2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@@](C(C)=O)(OC(=O)CCCCC)[C@@]1(C)CC2 DOMWKUIIPQCAJU-LJHIYBGHSA-N 0.000 description 1
- 241000153282 Theope Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- 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
- G06F8/36—Software reuse
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明はソフトウェア生成システム、よシ詳細にはソフ
トウェアの幾つかの部分が何回も生成されることが要求
されるようなソフトウェアの生成システムに関する。
トウェアの幾つかの部分が何回も生成されることが要求
されるようなソフトウェアの生成システムに関する。
ソフトウェア システムは、各々が特定のタスクを遂行
する複数の要素あるいはモジュールから構成される。こ
れら要素は、通常、1つあるいは複数の機能を実現し、
及び/あるいはソフトウェア システム全体として全体
的なタスクを遂行するために保持、更新及び検索される
情報のある構造を持つ部分を構成する。
する複数の要素あるいはモジュールから構成される。こ
れら要素は、通常、1つあるいは複数の機能を実現し、
及び/あるいはソフトウェア システム全体として全体
的なタスクを遂行するために保持、更新及び検索される
情報のある構造を持つ部分を構成する。
ソフトウェア システムには2つのタイプのモジュール
、つまり、1)そのタスクを遂行するために設計された
システムによって特にそのタスクのために要求される動
作を遂行する動作モジュール、及び2)第1のタイプの
ソフトウェア モジュールを支援するために必要とされ
る一般的なデータ処理動作を遂行するための支援モジュ
ールが存在する。典型的なシステムにおいては、大多数
のモジュールが、第2のタイプ、つまり、支援タイプに
属する。
、つまり、1)そのタスクを遂行するために設計された
システムによって特にそのタスクのために要求される動
作を遂行する動作モジュール、及び2)第1のタイプの
ソフトウェア モジュールを支援するために必要とされ
る一般的なデータ処理動作を遂行するための支援モジュ
ールが存在する。典型的なシステムにおいては、大多数
のモジュールが、第2のタイプ、つまり、支援タイプに
属する。
異なるソフトウェア システムの支援モジュールの間に
は多くの類似点が存在する。例えば、全てのオペレーテ
ィング システムは、ある方法によって、項目のスタッ
ク、待ち行列及びテーブルを保持及び処理することを要
求される。例えば、項目のテーブルを処理するための必
要とされる動作はテーブル内になにが格納されていても
同じである。しかし1つのオペレーティング システム
が、個々が異なるタイプの項目を含む複数の独立したテ
ーブルを処理するために要求されることも、さらに、異
なるオペレーティング システムが異なるタイプの項目
を処理し、従って、これら項目に対する異なるテーブル
を必要とする場合もある。
は多くの類似点が存在する。例えば、全てのオペレーテ
ィング システムは、ある方法によって、項目のスタッ
ク、待ち行列及びテーブルを保持及び処理することを要
求される。例えば、項目のテーブルを処理するための必
要とされる動作はテーブル内になにが格納されていても
同じである。しかし1つのオペレーティング システム
が、個々が異なるタイプの項目を含む複数の独立したテ
ーブルを処理するために要求されることも、さらに、異
なるオペレーティング システムが異なるタイプの項目
を処理し、従って、これら項目に対する異なるテーブル
を必要とする場合もある。
現在のソフトウェア開発技術においては、ソフトウェア
システムのモジュールは全てスクラッチから開発され
る。この作業が殆んどのモジュールが他の類似のソフト
ウェアシステムに対して既に開発されているのにもかか
わらず行なわれている。前に開発されたソフトウェア要
素を再使用することができないのは、現在のソフトウェ
ア開発ツールでは総称モジュールの指定及び生成が不可
能なためである。今日の技術においては、モジュールは
単に1つの特定のフオームの構造の特定のタイプの特定
の項目に関しての特定の動作を遂行するためにのみ開発
される。このため、例えば、あるタイプの項目のテーブ
ルを支援するソフトウニ“ア モジュールは別のタイプ
の項目のテーブルを支援するために使用できない。また
、別の例として、テーブル内の項目を検出するための特
定の捜索方法を使用するモジュールは異なる捜索方法が
必要とされる場合には使用できない。従って、ソフトウ
ェア開発者によって指定される要件に従ってソフトウェ
アの部分を自動的に生成するシステムに対する需要が存
在する。
システムのモジュールは全てスクラッチから開発され
る。この作業が殆んどのモジュールが他の類似のソフト
ウェアシステムに対して既に開発されているのにもかか
わらず行なわれている。前に開発されたソフトウェア要
素を再使用することができないのは、現在のソフトウェ
ア開発ツールでは総称モジュールの指定及び生成が不可
能なためである。今日の技術においては、モジュールは
単に1つの特定のフオームの構造の特定のタイプの特定
の項目に関しての特定の動作を遂行するためにのみ開発
される。このため、例えば、あるタイプの項目のテーブ
ルを支援するソフトウニ“ア モジュールは別のタイプ
の項目のテーブルを支援するために使用できない。また
、別の例として、テーブル内の項目を検出するための特
定の捜索方法を使用するモジュールは異なる捜索方法が
必要とされる場合には使用できない。従って、ソフトウ
ェア開発者によって指定される要件に従ってソフトウェ
アの部分を自動的に生成するシステムに対する需要が存
在する。
本発明のシステムによると、頻繁に使用されるソフトウ
ェア要素が一度のみ設計及び開発され、これらが異なる
背景及び異なる要件を持つ異なるシステム内で何度も再
使用される。これは設計者にその要素が使用される特定
の背景と基本的に独立したソフトウェア要素を指定する
ことができる機能を提供することによって達成される。
ェア要素が一度のみ設計及び開発され、これらが異なる
背景及び異なる要件を持つ異なるシステム内で何度も再
使用される。これは設計者にその要素が使用される特定
の背景と基本的に独立したソフトウェア要素を指定する
ことができる機能を提供することによって達成される。
このモジュールを新たなシステムにそのシステム固有の
要件を持たせて統合したい場合、本発明によるシステム
はこのモジュールのその新たなシステムの要件に合った
具体的バージョンを自動的に生成する。
要件を持たせて統合したい場合、本発明によるシステム
はこのモジュールのその新たなシステムの要件に合った
具体的バージョンを自動的に生成する。
ソフトウェア再使用のためのこのシステムは以下の可視
的要素から構成される。
的要素から構成される。
■、吃称モジュールを指定するための形式2、第1項の
指定言語にて書かれた仕様を処理するためのコンパイラ
。
指定言語にて書かれた仕様を処理するためのコンパイラ
。
3、総称モジュールからそれぞれが与えられた特定の背
景内でその背景の要件に基づいて機能する複数の具体的
ソフトウェア モジュールを自動的に生成するためのイ
ンスタンシエータ。
景内でその背景の要件に基づいて機能する複数の具体的
ソフトウェア モジュールを自動的に生成するためのイ
ンスタンシエータ。
このシステムによって処理される論理実体は汎用要素(
GPC)と呼ばれる。1つのGCPは総称プログラミン
グ サービスの集合を提供する。例えば、cpcは特定
のソフトウェア テーブルを保持及び処理し、ある特定
のタイプの項目を格納するために必要とされる全ての動
作及びデータ定義を提供する。
GPC)と呼ばれる。1つのGCPは総称プログラミン
グ サービスの集合を提供する。例えば、cpcは特定
のソフトウェア テーブルを保持及び処理し、ある特定
のタイプの項目を格納するために必要とされる全ての動
作及びデータ定義を提供する。
このGPCによって提供される(集合的に1サービス“
と呼ばれる)これら動作及び定義はこれらが9テーブル
“の動作及び定義の基本のみを把握し、これらが特定の
タイプの項目あるいは特定の処理方法に具体的に連結さ
れないという意味にお鈷て総称的である。
と呼ばれる)これら動作及び定義はこれらが9テーブル
“の動作及び定義の基本のみを把握し、これらが特定の
タイプの項目あるいは特定の処理方法に具体的に連結さ
れないという意味にお鈷て総称的である。
従って、これらサービスは、原形のままでは、どのプロ
グラムにも使用できない。
グラムにも使用できない。
しかし、この総称サービスが、それらが意図された環境
の背景及び要件が入力されると、本発明によるシステム
は、これらを具体的プログラミング サービスに生成す
る。例えば、プログラマがテーブル内に格納されるべき
項目のタイプを決定し、この情報を本発明によるシステ
ムに送ると、インスタンシエータを使用してGPCの具
体的、つまシ、翻訳されたバージョンが自動的に生成さ
れる。このソフトウェア コードの生成されたバージョ
ンは、プログラマによってスクラッチから書かれたもの
と全く同様である。この総称バージョンから具体的バー
ジョンを生成するプロセスはインスタンシェーション
プロセスと呼ばれる。
の背景及び要件が入力されると、本発明によるシステム
は、これらを具体的プログラミング サービスに生成す
る。例えば、プログラマがテーブル内に格納されるべき
項目のタイプを決定し、この情報を本発明によるシステ
ムに送ると、インスタンシエータを使用してGPCの具
体的、つまシ、翻訳されたバージョンが自動的に生成さ
れる。このソフトウェア コードの生成されたバージョ
ンは、プログラマによってスクラッチから書かれたもの
と全く同様である。この総称バージョンから具体的バー
ジョンを生成するプロセスはインスタンシェーション
プロセスと呼ばれる。
同一のGPCを使用して異なるソフトウェア システム
に対する異なる具体的バージョンを生成することができ
る。つまり、本発明によるシステムにおいては、ソフト
ウェア要素が一度のみ生成され、これが何回でも必要に
応じて異なるソフトウェア システムに合うように自動
的に修正される。
に対する異なる具体的バージョンを生成することができ
る。つまり、本発明によるシステムにおいては、ソフト
ウェア要素が一度のみ生成され、これが何回でも必要に
応じて異なるソフトウェア システムに合うように自動
的に修正される。
本発明のこれら及び他の目的及び特徴、並びに動作及び
用途は、−例としての実施態様を図面を参照して読むこ
とによって一層明白となるものである。
用途は、−例としての実施態様を図面を参照して読むこ
とによって一層明白となるものである。
上に説明され、また第1図に示されるごとく、ここに示
される実施態様は汎用コンピュータ、例えば、VAXI
1/78oとともに使用される。さらに、ここに説明
のシステムはパーソナル コンピュータ、側光ば、AT
&T PC6300を含む任意のコンピュータでも使
用できる。
される実施態様は汎用コンピュータ、例えば、VAXI
1/78oとともに使用される。さらに、ここに説明
のシステムはパーソナル コンピュータ、側光ば、AT
&T PC6300を含む任意のコンピュータでも使
用できる。
内部的には、このシステムは関連する4つの要素、つ−
まり:ユーザが汎用要素(GPC)仕様101を生成す
るために使用する仕様記述言語、この仕様言語を処理す
るためのGPCコンパイラ102、コンパイルされたG
PC仕様のための記憶領域1o4、及びインスタンシエ
ータ106から構成される。
まり:ユーザが汎用要素(GPC)仕様101を生成す
るために使用する仕様記述言語、この仕様言語を処理す
るためのGPCコンパイラ102、コンパイルされたG
PC仕様のための記憶領域1o4、及びインスタンシエ
ータ106から構成される。
必須要件ではないが、GPC仕様からGPCの英語によ
る説明を抽出し、これを後に他のユーザが前に書かれた
GPCを調べ再使用できるように別個のデータ ベース
103に格納しておくと便利である。
る説明を抽出し、これを後に他のユーザが前に書かれた
GPCを調べ再使用できるように別個のデータ ベース
103に格納しておくと便利である。
GPCの設計者は仕様記述言語を使用してGPCを総称
的背景自由形式にて指定する。
的背景自由形式にて指定する。
設計者は次にこのGPC仕様をコンピュータ内のファイ
ル101に格納し、次にGPCコンパイラ102を1呼
び出してこのファイルを処理する。この処理の結果、コ
ンパイルされたGPC仕様が記憶領域104内に格納さ
れる。
ル101に格納し、次にGPCコンパイラ102を1呼
び出してこのファイルを処理する。この処理の結果、コ
ンパイルされたGPC仕様が記憶領域104内に格納さ
れる。
GPCのユーザはユーザによって開発中のソース プロ
グラム105に適当な呼び出し命令文を挿入する。この
呼び出し命令文に応答して、後に説明されるように、シ
ステムはまず最初に適当なプログラム セグメントを生
成し、次に生成されたプログラム セグメントをユーザ
プログラムに挿入及び/あるいはユーザ プログラム
を修正することによって拡張されたプログラム101を
生成する。
グラム105に適当な呼び出し命令文を挿入する。この
呼び出し命令文に応答して、後に説明されるように、シ
ステムはまず最初に適当なプログラム セグメントを生
成し、次に生成されたプログラム セグメントをユーザ
プログラムに挿入及び/あるいはユーザ プログラム
を修正することによって拡張されたプログラム101を
生成する。
この拡張されたプログラムはコンパイラ108によって
周知の方法でコンパイルされ、コンパイルされたプログ
ラム109を生成する。
周知の方法でコンパイルされ、コンパイルされたプログ
ラム109を生成する。
そしてこのプログラムによってコンピュータが動作され
る。
る。
仕様記述言語
本発明は全てのコンピュータ言語に使用できるが、説明
の目的上、周知のC言語が想定される。この言語の説゛
萌に関しては、1978年に合衆国、ニューシャーシー
州、エンジェルウッド クリフ(Englewood
C11ffs s N−J、 U、 S、 A、 )所
在プレンテイスーヘイル(Prentice −Hal
e )社から出版された;ソフトウェア シリーズ:B
、W、カーニハン(B、 W、 Kernighan
)及びり、 M、ライチェ(D、 M、 Rithie
)著1Cプログラミング言語(The CProgr
amming Language )“を参照すること
。この仕様において太文字は言語キーワードを表わする
に使用され:イタリック体はユーザ供給文字列を表わす
のに使用され;曲った括弧“)““(“はオプションの
項目を囲むのに使用され:垂直バー91 “は代替を分
離するのに使用され;そしてチ(及びチ)は引用のため
に使用されるキーワードである。
の目的上、周知のC言語が想定される。この言語の説゛
萌に関しては、1978年に合衆国、ニューシャーシー
州、エンジェルウッド クリフ(Englewood
C11ffs s N−J、 U、 S、 A、 )所
在プレンテイスーヘイル(Prentice −Hal
e )社から出版された;ソフトウェア シリーズ:B
、W、カーニハン(B、 W、 Kernighan
)及びり、 M、ライチェ(D、 M、 Rithie
)著1Cプログラミング言語(The CProgr
amming Language )“を参照すること
。この仕様において太文字は言語キーワードを表わする
に使用され:イタリック体はユーザ供給文字列を表わす
のに使用され;曲った括弧“)““(“はオプションの
項目を囲むのに使用され:垂直バー91 “は代替を分
離するのに使用され;そしてチ(及びチ)は引用のため
に使用されるキーワードである。
この仕様記述言語はGPC仕様を書くのに使用される。
個々の仕様は3つの主な部分、つまり:記述部分、宣言
部分、及び定義部分から構成される。GPC仕様の一般
的なフオームが第1表に示される。尚、第1表から第1
5表は汎用要素(GPC)のフォーマットを示す。又、
以後表示される表に関しては本欄の最後にまとめて表示
する。
部分、及び定義部分から構成される。GPC仕様の一般
的なフオームが第1表に示される。尚、第1表から第1
5表は汎用要素(GPC)のフォーマットを示す。又、
以後表示される表に関しては本欄の最後にまとめて表示
する。
最初のチの前の全てのものは記述部分201と呼ばれ、
コンパイル プロセスによって無視される。ただし、本
発明によるシステムのユーザは記述部分が機械的に処理
されカタログ103内に格納されるようにテンプレート
+Vparameter “(パラン“り) 、’ 5
ervice’(サービス)あるいは’ hidden
“ (ハイド)を宣言できる。パラメータ宣言の構文が
第2表に示され、サービス宣言の構文が第3表に示され
、モしてハイド宣言の構文が第4表に示される。
コンパイル プロセスによって無視される。ただし、本
発明によるシステムのユーザは記述部分が機械的に処理
されカタログ103内に格納されるようにテンプレート
+Vparameter “(パラン“り) 、’ 5
ervice’(サービス)あるいは’ hidden
“ (ハイド)を宣言できる。パラメータ宣言の構文が
第2表に示され、サービス宣言の構文が第3表に示され
、モしてハイド宣言の構文が第4表に示される。
パラメータはGPCユーザによって指定されるものであ
り、一方、5ervice (サービス)はGPCによ
ってユーザに提供されるものであるo parame
ter (パラメータ)Fi、type(タイプ)、v
alue C値)(オブジェクトのサイズ、あるいはエ
ラー リターン コードを定義する定数)、optio
n (オプション)(例えば、 異なるアルゴリズム
を選択するために使用)、operation (動作
)(例えば、ハツシュ機能あるいはエラー処理ルーチン
)、あるいはproge (プローグ)(任意のテキス
ト)であシえる。5ervice (サービス)は、t
ype (タイプ)% value (値)、oper
ation(動作)・あるいはprose (プローグ
)でありえる。hidden (ハイド)に関しては後
に説明される。
り、一方、5ervice (サービス)はGPCによ
ってユーザに提供されるものであるo parame
ter (パラメータ)Fi、type(タイプ)、v
alue C値)(オブジェクトのサイズ、あるいはエ
ラー リターン コードを定義する定数)、optio
n (オプション)(例えば、 異なるアルゴリズム
を選択するために使用)、operation (動作
)(例えば、ハツシュ機能あるいはエラー処理ルーチン
)、あるいはproge (プローグ)(任意のテキス
ト)であシえる。5ervice (サービス)は、t
ype (タイプ)% value (値)、oper
ation(動作)・あるいはprose (プローグ
)でありえる。hidden (ハイド)に関しては後
に説明される。
1dentifier (識別子)は文字から開始する
一連の文字あるいは数字である。下線N−“け1文字と
してカウントされる。大文字と小文字は区別される。最
初の12文字以下のみが有効である。ただし、最つと多
くすることも可能である。
一連の文字あるいは数字である。下線N−“け1文字と
してカウントされる。大文字と小文字は区別される。最
初の12文字以下のみが有効である。ただし、最つと多
くすることも可能である。
type Cタイプ)は以下の一般フオームにて使用
できる任意のC言語である。
できる任意のC言語である。
type VariableName ;タイプの一
例としては、’ int*“、’ float“、’
5truct (int varl ; long v
ar2 ;l “、及び’ MyType “等を挙
げることができる。
例としては、’ int*“、’ float“、’
5truct (int varl ; long v
ar2 ;l “、及び’ MyType “等を挙
げることができる。
ここで、MyTypeは前に、例えば、以下のように定
義される。
義される。
typedef char * Mytype()
1value C値)は、例えば、′25〃、ゝゝ 1
\0331 “、及び“1.9E−6ttなどノヨうな
任意のC言語である。
1value C値)は、例えば、′25〃、ゝゝ 1
\0331 “、及び“1.9E−6ttなどノヨうな
任意のC言語である。
オプションはそのオプションに対して有効な事前に定義
された文字列の1つに対応する文字の任意のシーケンス
である。
された文字列の1つに対応する文字の任意のシーケンス
である。
operation (動作)は構文的にC言語機能の
名称と等しい名称である。これは、1つのtype (
タイプ)、cast (カースト)を持つ。
名称と等しい名称である。これは、1つのtype (
タイプ)、cast (カースト)を持つ。
prose (プローグ)はテキスト セグメントの名
称である。
称である。
hidden (ハイド)はユーザによってアクセス
することはできないが1つあるいは複数のユーザによっ
てアクセス可能なサービスによって必要とされるサービ
スである。
することはできないが1つあるいは複数のユーザによっ
てアクセス可能なサービスによって必要とされるサービ
スである。
第5表及び第6表に宣言の例が示される。
GPC仕様の実現部分205は個々の宣言された5er
vice (サービス)あるいはhidden(ハイド
)に対する1つのプログラムから構成される。このプロ
グラムはインスタンシェータ106にユーザ プログラ
マのコード内に対応するサービスに対する呼(call
) が発見されたとき何なすべきかを命令する。例
えば1第12表に示される非常に簡単なプロダラムはサ
ービス’ node “ (ノード)への呼が検出され
たときのインスタンシエータ106の動作を定義する。
vice (サービス)あるいはhidden(ハイド
)に対する1つのプログラムから構成される。このプロ
グラムはインスタンシェータ106にユーザ プログラ
マのコード内に対応するサービスに対する呼(call
) が発見されたとき何なすべきかを命令する。例
えば1第12表に示される非常に簡単なプロダラムはサ
ービス’ node “ (ノード)への呼が検出され
たときのインスタンシエータ106の動作を定義する。
つまシ、このプログラムはインスタンシエータ106に
C言語タイプを定義し、それにこのサービス’node
〃(ノード)に対してユーザが指定する名称を与える
ように命令する。タイプの個々の定義はユーザによって
選択された連結法(シングルあるいはダブル)に依存す
る。
C言語タイプを定義し、それにこのサービス’node
〃(ノード)に対してユーザが指定する名称を与える
ように命令する。タイプの個々の定義はユーザによって
選択された連結法(シングルあるいはダブル)に依存す
る。
句”requires Always”は” node
”がインスタンシェード(1nstantiate
)されるたびに、インスタンシエータ106は、まず最
初にもう1つの’ Always ” と呼ばれるサー
ビスが既にインスタンシェードされていることを確保し
なければならないことを記述する。
”がインスタンシェード(1nstantiate
)されるたびに、インスタンシエータ106は、まず最
初にもう1つの’ Always ” と呼ばれるサー
ビスが既にインスタンシェードされていることを確保し
なければならないことを記述する。
オプションの句’ requires 1dentif
ier’は、異なる値の1dentifier (識別
子)に対して何度も反復することができる。ここで、1
dentifier (識別子)はhidden (ハ
イド)、あるいは他の5ervice (サービス)の
名称である。
ier’は、異なる値の1dentifier (識別
子)に対して何度も反復することができる。ここで、1
dentifier (識別子)はhidden (ハ
イド)、あるいは他の5ervice (サービス)の
名称である。
3つの命令、つまり、replace (置換え)11
header (見出し)、及びoppend (附加
)、並びに1つのフロー構造if −then −el
se −endifのみが存在する。
header (見出し)、及びoppend (附加
)、並びに1つのフロー構造if −then −el
se −endifのみが存在する。
命令は、if −then −else −endif
構造によってグループ化されたときを除いてそれらが書
かれたのと同一シーケンスによって実行される。
構造によってグループ化されたときを除いてそれらが書
かれたのと同一シーケンスによって実行される。
replace (置換え)命令は第7表に示されるよ
うな一般フオームを持つ。このreplace(置換え
)命令が実行されると、インスタンシエータ106は呼
のテキストを任意のC言語セグメントによって置換する
。1つの動作に対する呼のテキストは開始ドル信号、サ
ービスの名称、終端ドル記号、及び左右の括弧及び括弧
間の中身から構成される。他のサービスでは、呼のテキ
サスはサービスの名称及ヒドル記号の囲いベアから構成
される。この命令はハイドに対しては許されないことは
勿論である。
うな一般フオームを持つ。このreplace(置換え
)命令が実行されると、インスタンシエータ106は呼
のテキストを任意のC言語セグメントによって置換する
。1つの動作に対する呼のテキストは開始ドル信号、サ
ービスの名称、終端ドル記号、及び左右の括弧及び括弧
間の中身から構成される。他のサービスでは、呼のテキ
サスはサービスの名称及ヒドル記号の囲いベアから構成
される。この命令はハイドに対しては許されないことは
勿論である。
置換えプロセスの際に、C言語セグメント内の全ての文
字は以下のケースを除いて変換されないまま出力に伝送
される。
字は以下のケースを除いて変換されないまま出力に伝送
される。
一一フオーム\$ Name $のシーケンスは$ N
ame $ に変換される。(これによってGPCを
他のGPCによって指定することが可能となる)。
ame $ に変換される。(これによってGPCを
他のGPCによって指定することが可能となる)。
一一フオーム$ Name $ のシーケンスは総称
名”Name″を持つ〔サービス呼ではなく)サービス
のリファレンスとみなされ、単に、そのサービスに対す
るユーザ定義名に変換される。
名”Name″を持つ〔サービス呼ではなく)サービス
のリファレンスとみなされ、単に、そのサービスに対す
るユーザ定義名に変換される。
一一フオーム$o$のシーケンスは指定中のプログラム
を持つサービスのユーザによって既知の名称に変換され
る。
を持つサービスのユーザによって既知の名称に変換され
る。
一一タイブoperation (動作)の動作サービ
スでは、nが1から20の間の数字から成るフオーム$
n$のシーケンスはそのサービス呼のn番目の引数の(
拡張された)テキストのリファレンスとみなされ、この
シーケンスは対応する文字列に変換される。あるサービ
ス呼の引数はそれ自体サービス呼である場合もあること
に注意する。
スでは、nが1から20の間の数字から成るフオーム$
n$のシーケンスはそのサービス呼のn番目の引数の(
拡張された)テキストのリファレンスとみなされ、この
シーケンスは対応する文字列に変換される。あるサービ
ス呼の引数はそれ自体サービス呼である場合もあること
に注意する。
append (附加)命令は第8表に示される一般フ
オームを持つ。この命令が実行されると、インスタンシ
エータ106は与えられたC言語セグメントをユーザ
ンース ファイルの(現在の)終端に附加する。このC
言語セグメントの$n$及び$ Name $ 文字列
の変換も遂行される。修飾子multiple (複数
)が存在する場合は、そのC言語セグメントがサービス
呼が処理されるたびに附加され。
オームを持つ。この命令が実行されると、インスタンシ
エータ106は与えられたC言語セグメントをユーザ
ンース ファイルの(現在の)終端に附加する。このC
言語セグメントの$n$及び$ Name $ 文字列
の変換も遂行される。修飾子multiple (複数
)が存在する場合は、そのC言語セグメントがサービス
呼が処理されるたびに附加され。
once (一度)が存在する場合、あるいは修飾子が
全く存在しない場合は、C言語セグメントは最高でも一
度のみ附加される。
全く存在しない場合は、C言語セグメントは最高でも一
度のみ附加される。
header (見出し)命令1−を第9表に示され
る一般フオームを持つ。この命令が実行されると、イン
スタンシエータ106はユーザソース ファイル内の与
えられたC言語セグメントを対応するGPC要求ライン
の立置(あるいは同−GPCの他のheader (
見出し)命令の最後に挿入されたC言語セグメントの後
)に挿入する。このC言語セグメントの処理は上に説明
のごとくである。
る一般フオームを持つ。この命令が実行されると、イン
スタンシエータ106はユーザソース ファイル内の与
えられたC言語セグメントを対応するGPC要求ライン
の立置(あるいは同−GPCの他のheader (
見出し)命令の最後に挿入されたC言語セグメントの後
)に挿入する。このC言語セグメントの処理は上に説明
のごとくである。
if −then −elle −endif 制御
フロー構造は第10表に示される一般フオームを持つ。
フロー構造は第10表に示される一般フオームを持つ。
フオーム1101において、” 1nstructio
ns”(命令)は” condition ’ (条件
)が真であるときにのみ遂行される。フオーム1102
においては、キーワードthenと613eの間の命令
は“condition“が真であるときにのみ遂行さ
れ、キーワードelBeとendifの間の命令は“c
ondition ’が真でないときにのみ遂行される
。if −then −else −endif構造は
構文的[1つの命令に等しく、従って、別のif −t
hen −else −endffのif−あるいは6
11e−ブロック内に現れることがある。
ns”(命令)は” condition ’ (条件
)が真であるときにのみ遂行される。フオーム1102
においては、キーワードthenと613eの間の命令
は“condition“が真であるときにのみ遂行さ
れ、キーワードelBeとendifの間の命令は“c
ondition ’が真でないときにのみ遂行される
。if −then −else −endif構造は
構文的[1つの命令に等しく、従って、別のif −t
hen −else −endffのif−あるいは6
11e−ブロック内に現れることがある。
このendifのあいまいさFilつのendifを最
後に遭遇されるifと結ぶことによって解決される。
後に遭遇されるifと結ぶことによって解決される。
” conditiorl ” (条件)は第11表に
示される一般フオームを持つ。’ 1dentifie
r ’(識別子)はサービスあるいはパラメータの総称
名である。フオーム1201及び1202はユーザが与
えられたパラメータあるいはサービスの省略時の値(d
efault value )に代わる値を指定したか
否かをテストする。ユーザが省略時と異なる値Cdef
ault value )を指定した場合は、第1の条
件が真であり、第2の条件は真でなく、異なる値を指定
しない場合は、第1の条件は真でなく、第2の条件が真
である。
示される一般フオームを持つ。’ 1dentifie
r ’(識別子)はサービスあるいはパラメータの総称
名である。フオーム1201及び1202はユーザが与
えられたパラメータあるいはサービスの省略時の値(d
efault value )に代わる値を指定したか
否かをテストする。ユーザが省略時と異なる値Cdef
ault value )を指定した場合は、第1の条
件が真であり、第2の条件は真でなく、異なる値を指定
しない場合は、第1の条件は真でなく、第2の条件が真
である。
フオーム1203及び1204は与えられた文字列(s
tring ) に対して与えられたパラメータある
いはサービスの値をテストする。
tring ) に対して与えられたパラメータある
いはサービスの値をテストする。
−==#は等しいことを意味し“ 1=”は等しくない
ことを意味する。
ことを意味する。
第12表の例では、ライン1302はインスタンシエー
タ10Gにこのサービスのユーザによって既知の名称を
優(及び悌)のペアによって囲まれたセグメントの内容
と置換するように命令する。このケースでは、置換テキ
ストは単に($0$によって指定される)ユーザによっ
て既知の名称である。つまり、この命令は実際には”e
cho″ (エコー)命令である。
タ10Gにこのサービスのユーザによって既知の名称を
優(及び悌)のペアによって囲まれたセグメントの内容
と置換するように命令する。このケースでは、置換テキ
ストは単に($0$によって指定される)ユーザによっ
て既知の名称である。つまり、この命令は実際には”e
cho″ (エコー)命令である。
命令1303はif −then −else −en
fif構造を使用して、制御フローをユーザによってo
ption (オプション)SINGLY が要求され
るか否かに対応する2つの経路に分割する。異なるのは
、総称名”ノード″を持つタイプがいかに定義されるか
である。いずれのケースにおいても、たった1つの命令
、つまり、インスタンシエータ106によって実行され
るべきheader (見出し)命令が存在するのみで
ある。header (見出し)命令を実行すると、結
果として、ユーザ ファイルのGPCが要求されたライ
ンの所に与えられたセグメントが挿入される。$ Da
te $及び$ node $ はそれぞれパラメー
ダ’ data ”、及びサービス”node”に対す
るユーザの名称を表わす。修飾子0neeはサービス”
mode”が何度呼び出されてもセグメントの挿入を一
度のみ行なうべきであることを指定する。
fif構造を使用して、制御フローをユーザによってo
ption (オプション)SINGLY が要求され
るか否かに対応する2つの経路に分割する。異なるのは
、総称名”ノード″を持つタイプがいかに定義されるか
である。いずれのケースにおいても、たった1つの命令
、つまり、インスタンシエータ106によって実行され
るべきheader (見出し)命令が存在するのみで
ある。header (見出し)命令を実行すると、結
果として、ユーザ ファイルのGPCが要求されたライ
ンの所に与えられたセグメントが挿入される。$ Da
te $及び$ node $ はそれぞれパラメー
ダ’ data ”、及びサービス”node”に対す
るユーザの名称を表わす。修飾子0neeはサービス”
mode”が何度呼び出されてもセグメントの挿入を一
度のみ行なうべきであることを指定する。
0nce は省略時の値(default value
)であり、これは修飾子multiple によっ
て書き変えることができる。
)であり、これは修飾子multiple によっ
て書き変えることができる。
前述したごとく、GPCの宣言部分内には、もう1つの
クラスのオブジェクト、つまり、hidden (ハ
イド)として宣言されたオブジェクトが存在する。hi
dden (ハイド)はユーザ プログラマによっては
認識されないが、1つあるいは複数の他のサービスある
いはハイドを実現するのに使用されるサービスである。
クラスのオブジェクト、つまり、hidden (ハ
イド)として宣言されたオブジェクトが存在する。hi
dden (ハイド)はユーザ プログラマによっては
認識されないが、1つあるいは複数の他のサービスある
いはハイドを実現するのに使用されるサービスである。
ハイドのインスタンシェーションは必ずrequire
s 機構によって呼び出される。この例では、ライン
606内に宣言された隠れた“Always ’ に対
するプログラムが第13表及び第14表に示される。
s 機構によって呼び出される。この例では、ライン
606内に宣言された隠れた“Always ’ に対
するプログラムが第13表及び第14表に示される。
GPC仕様記述言語の1つの興味深い特徴としてope
ration (動作〕タイプのサービスがいかに使用
されるかを挙げることができる。
ration (動作〕タイプのサービスがいかに使用
されるかを挙げることができる。
GPC設計者F′iC言語セグメントをそのパラメータ
の1つとみなす1つのoperation (動作〕を
指定するととができる。例えば、リスト、そのリストの
個々の要素内のデータを表わす名称、及びコードの1つ
のセグメントをそのパラメータとみなす。perati
on (動作)forall ”を指定し、そのリスト
内の全ての要素に対するセグメントを最初から最後まで
実行することができる。この動作の仕様が第15表に示
される。
の1つとみなす1つのoperation (動作〕を
指定するととができる。例えば、リスト、そのリストの
個々の要素内のデータを表わす名称、及びコードの1つ
のセグメントをそのパラメータとみなす。perati
on (動作)forall ”を指定し、そのリスト
内の全ての要素に対するセグメントを最初から最後まで
実行することができる。この動作の仕様が第15表に示
される。
コンパイラ
GPCコンパイラ102はGPC仕様をインスタンシエ
ータ106に適するフォーマットに翻訳する役割を持つ
。これはGPC仕様を読み、これはGPC仕様を読み、
これが構文的に正常であるかチェックする。GPCコン
パイラによって遂行されるチェックには以下が含まれる
。
ータ106に適するフォーマットに翻訳する役割を持つ
。これはGPC仕様を読み、これはGPC仕様を読み、
これが構文的に正常であるかチェックする。GPCコン
パイラによって遂行されるチェックには以下が含まれる
。
一一仕様内の全ての命令文が構文的に正常であるか。
一一全ての宣言されたサービス及びハイドが正常に定義
されているか。
されているか。
m−存在ループが存在しないか。あるサービスあるいは
ハイドが別のサービスあるいはハイドのインスタンシェ
ーションを要求 (requires ) する場合は、後者のサービ
スあるいはハイドはrequires 命令のチェー
ンを介して前のサービスあるいはハイドのインスタンシ
ェーションを要求(requires ) すること
はない。
ハイドが別のサービスあるいはハイドのインスタンシェ
ーションを要求 (requires ) する場合は、後者のサービ
スあるいはハイドはrequires 命令のチェー
ンを介して前のサービスあるいはハイドのインスタンシ
ェーションを要求(requires ) すること
はない。
GPCコンパイラが異常を検出すると、GPCはエラー
メツセージを印字することによってGPC設計者にこ
れを通知する。存在しない場合は、これは他のコンパイ
ラと類似の方法でシンボル テーブル及びパース(pa
rse )木を2構成し、これらをコンパイルされたG
PCl 04のための記憶領域に格納する。この情報は
後にインスタンシエータ106によって拡張されたプロ
グラム107を生成するのに使用される。
メツセージを印字することによってGPC設計者にこ
れを通知する。存在しない場合は、これは他のコンパイ
ラと類似の方法でシンボル テーブル及びパース(pa
rse )木を2構成し、これらをコンパイルされたG
PCl 04のための記憶領域に格納する。この情報は
後にインスタンシエータ106によって拡張されたプロ
グラム107を生成するのに使用される。
GPCコンパイラは通常のコンパイラのように機械コー
ドを生成することはないことに注意する。GPCコンパ
イラの出力は、仕様の(2進)符号化されたものであり
、これは後に説明されるように、インスタンシエ・〜り
によってプログラム セグメントを生成するのに使用さ
れる。
ドを生成することはないことに注意する。GPCコンパ
イラの出力は、仕様の(2進)符号化されたものであり
、これは後に説明されるように、インスタンシエ・〜り
によってプログラム セグメントを生成するのに使用さ
れる。
GPCの使用
新たなソフトウェア プログラムの作成を開始しようと
するユーザ プログラマはGPCカタログ103内から
開発されるべきプログラムに使用できるGPC(複数)
を捜がす。
するユーザ プログラマはGPCカタログ103内から
開発されるべきプログラムに使用できるGPC(複数)
を捜がす。
発見されたら、ユーザ プログラマはプログラム内に必
要とされるGPC(複数)の名称を指定し、また個々の
GPCが動作する背景に関する情報を提供する”req
uest 1ine”(要求ライン)を挿入する。これ
ら要求ラインは、これらがコンパイラ108にパスされ
ないことから、’ 1ndirect” (間接)命令
文(複数)であるとみなすことができる。一方、変換さ
れないままコンパイラ108にパスされる命令文は直接
命令文であるとみなすことができる。
要とされるGPC(複数)の名称を指定し、また個々の
GPCが動作する背景に関する情報を提供する”req
uest 1ine”(要求ライン)を挿入する。これ
ら要求ラインは、これらがコンパイラ108にパスされ
ないことから、’ 1ndirect” (間接)命令
文(複数)であるとみなすことができる。一方、変換さ
れないままコンパイラ108にパスされる命令文は直接
命令文であるとみなすことができる。
典型的なGPC要求ラインにおいては、ユーザはパラメ
ータの値及びサービスの名称を指定する。GPC要求ラ
インは第16表に示される一般フオームを持つ。尚、第
16表から第20表は典型的なGPC用途のフォーマッ
トを示す。
ータの値及びサービスの名称を指定する。GPC要求ラ
インは第16表に示される一般フオームを持つ。尚、第
16表から第20表は典型的なGPC用途のフォーマッ
トを示す。
Args はGPCのパラメータ及びサービスに対応
する’ argument −name ”= arg
ument −nalue″(引数−名称=引数−値)
のコンマによって分離されたリストである。
する’ argument −name ”= arg
ument −nalue″(引数−名称=引数−値)
のコンマによって分離されたリストである。
GPCが” l1sthndlr %” と呼ばれるも
のと仮定し、第17表及び第18表は2つのGPC要求
ラインを示す。
のと仮定し、第17表及び第18表は2つのGPC要求
ラインを示す。
第1図のケース(第17表)においては、” MyEl
ementType”がユーザによって前にC言語のt
)’fledef構造によって定義されたタイプの名称
であると仮定される。GPCは、他のサービスとともに
、” MyLi s t T ype”と呼ばれるタイ
プ、及びADD”と呼ばれる動作の定義を提供する。第
2のケース(第18表)においては、” dateHの
定義が与えられた構造の定義であるとみなされ、GPC
によって提供されるサービスはこれらの省略値の名称に
よって呼ばれる。
ementType”がユーザによって前にC言語のt
)’fledef構造によって定義されたタイプの名称
であると仮定される。GPCは、他のサービスとともに
、” MyLi s t T ype”と呼ばれるタイ
プ、及びADD”と呼ばれる動作の定義を提供する。第
2のケース(第18表)においては、” dateHの
定義が与えられた構造の定義であるとみなされ、GPC
によって提供されるサービスはこれらの省略値の名称に
よって呼ばれる。
ユーザは1isthndlrによって提供されるサービ
スが正しく定義されており、GPC要求ライン後のコン
パイル モジュール内のどこでも使用できるものと想定
できる。ユーザはこれらサーザスを” 5ervice
calls”(サービス呼)によって使用することが
できる。サービスはペアのドル記号($)内に囲まれた
ユーザによって即知の名称を示すことによって呼び出す
ことができる。例えば、第19表(第17表のGPC要
求ラインに対応)は、サービス′″1ist”及び”
addafter ”を呼び出す。
スが正しく定義されており、GPC要求ライン後のコン
パイル モジュール内のどこでも使用できるものと想定
できる。ユーザはこれらサーザスを” 5ervice
calls”(サービス呼)によって使用することが
できる。サービスはペアのドル記号($)内に囲まれた
ユーザによって即知の名称を示すことによって呼び出す
ことができる。例えば、第19表(第17表のGPC要
求ラインに対応)は、サービス′″1ist”及び”
addafter ”を呼び出す。
一例として、ユーザがプログラム内の1つの入力ライン
に対して1つの名称を読み出す1isthndlr G
PCを使用して、入力ストリーム内の名称及びそれらの
相対位置を逆の順序で印刷したいものと仮定する。つま
り、最初に入力された名称を最後に印刷したいものと仮
定する。すると、このユーザ ソース プログラムは第
20表に示されるようなプログラムとなる。ライン21
09から2166がGPC要求ラインを構成し、ライン
2199.2125.2129.2132.2134.
2135、及び2136が各々GPCサービス呼を含む
ことに注意する。
に対して1つの名称を読み出す1isthndlr G
PCを使用して、入力ストリーム内の名称及びそれらの
相対位置を逆の順序で印刷したいものと仮定する。つま
り、最初に入力された名称を最後に印刷したいものと仮
定する。すると、このユーザ ソース プログラムは第
20表に示されるようなプログラムとなる。ライン21
09から2166がGPC要求ラインを構成し、ライン
2199.2125.2129.2132.2134.
2135、及び2136が各々GPCサービス呼を含む
ことに注意する。
インスタンシェータ
インスタンシエータ106は(コンパイルされた)GP
C仕様及びGPC要求ラインの両方に従ってテーラ−メ
イド プログラムあるいはプログラム セグメントを生
成する役割を持つ。インスタンシエータ106は、まず
最初に、ユーザ ソース プログラム105を走査し、
GPC要求ラインを捜がす。発見されると、GPCの名
称を抽出し、コンパイルされたGPC記憶領域104内
の対応する(コンパイラされた)仕様の位置を突きとめ
る。インスタンシエータ106は、次に、ユーザによっ
て指定された値をGPC設計者によって宣言された総称
パラメータに連結する。
C仕様及びGPC要求ラインの両方に従ってテーラ−メ
イド プログラムあるいはプログラム セグメントを生
成する役割を持つ。インスタンシエータ106は、まず
最初に、ユーザ ソース プログラム105を走査し、
GPC要求ラインを捜がす。発見されると、GPCの名
称を抽出し、コンパイルされたGPC記憶領域104内
の対応する(コンパイラされた)仕様の位置を突きとめ
る。インスタンシエータ106は、次に、ユーザによっ
て指定された値をGPC設計者によって宣言された総称
パラメータに連結する。
この結果、全ての総称パラメータがそれと関連する具体
的値を持つGPC仕様の具体的バージョンが得られる。
的値を持つGPC仕様の具体的バージョンが得られる。
上のプロセスが同一〇PCに対して複数の要求が存在す
る場合でも要求された個々のGPCに対して一回遂行さ
れる(ユーザは毎回総称パラメータに対する異なるセッ
トの値を使用して、同一〇PCを数回要求することがで
きることに注意する)。
る場合でも要求された個々のGPCに対して一回遂行さ
れる(ユーザは毎回総称パラメータに対する異なるセッ
トの値を使用して、同一〇PCを数回要求することがで
きることに注意する)。
インスタンシエータ106fl’fだユーザソース プ
ログラムを走査し、サービス呼を捜す。サービス呼が検
出されると、インスタンシエータ106はその内部テー
ブルを使用して、どのGPCがそのサービスの定義を持
つか調べる。これは次に定義(これは、通常、総称パラ
メータとして定義される)並びにその総称パラメータに
対する対応する値の位置を突きとめる。この結果、ユー
ザ プログラムの部分の変更、ユーザ プログラムの部
分のプログラム セグメントによる代用、プログラム
セグメントのユーザ プログラムのさまざ筐なセクショ
ンへの挿入、全く新たなプログラムの生成、あるいはこ
れらのユーザプログラムへの附加が起こる。これらの具
体的な動作は、勿論、GPC仕様内のサービスの対応す
る定義によって決定される。
ログラムを走査し、サービス呼を捜す。サービス呼が検
出されると、インスタンシエータ106はその内部テー
ブルを使用して、どのGPCがそのサービスの定義を持
つか調べる。これは次に定義(これは、通常、総称パラ
メータとして定義される)並びにその総称パラメータに
対する対応する値の位置を突きとめる。この結果、ユー
ザ プログラムの部分の変更、ユーザ プログラムの部
分のプログラム セグメントによる代用、プログラム
セグメントのユーザ プログラムのさまざ筐なセクショ
ンへの挿入、全く新たなプログラムの生成、あるいはこ
れらのユーザプログラムへの附加が起こる。これらの具
体的な動作は、勿論、GPC仕様内のサービスの対応す
る定義によって決定される。
最後に、インスタンシエータIQ6は拡張されたファイ
ル107を生成し、このファイルに結果として生成され
たソース プログラム107を格納する。
ル107を生成し、このファイルに結果として生成され
たソース プログラム107を格納する。
第20表のプログラムに対応するインスタンシエータ1
06の出力(第1図の拡張されたプログラム107)が
第21表に示される。
06の出力(第1図の拡張されたプログラム107)が
第21表に示される。
尚、第21表は本発明の一例としての出力(生成された
プログラム)を示す。インスタンシエータ106がソー
ス ファイルを幾つかの点で変更していることに注意す
る。2つのtypedef句を7センブルし、これらを
GPCが要求されたラインの所に入力している。
プログラム)を示す。インスタンシエータ106がソー
ス ファイルを幾つかの点で変更していることに注意す
る。2つのtypedef句を7センブルし、これらを
GPCが要求されたラインの所に入力している。
” + 1nclude < memory、 h >
”が加えられている(ライン2209〕。ユーザ ソー
スファイル内の全てのサービス呼が置換されている。よ
り具体的には、動作”PUSH″及び”POP” に対
して完全なプログラムが生成されており、これがユーザ
コードに加えられている(それぞれライン2243か
ら2262並びにライン2263から2274)。
”が加えられている(ライン2209〕。ユーザ ソー
スファイル内の全てのサービス呼が置換されている。よ
り具体的には、動作”PUSH″及び”POP” に対
して完全なプログラムが生成されており、これがユーザ
コードに加えられている(それぞれライン2243か
ら2262並びにライン2263から2274)。
一方、動作” GET 、 ” ” TOP %” ”
isempty 、”及びhowmany ”は単に
プログラム セグメントによって置換されている(ライ
ン2229、z233.2236.2238.2239
、及び2240)。
isempty 、”及びhowmany ”は単に
プログラム セグメントによって置換されている(ライ
ン2229、z233.2236.2238.2239
、及び2240)。
拡張されたプログラム(第21表)はユーザが時間をか
けて全てスクラッチからソースプログラムを設計し、書
いた場合と同様なものとなる。ただし、GPCは任意の
ファミリーのモジュールに対して一度のみの設計が要求
されるため、設計者はモジュールの設計に十分な時間を
費すことができ、結果として、効率が非常に良いソース
コードを設計することができる。再使用可能なモジュ
ールのもう1つの特徴は、総合的なソフトウェア製造コ
ストを減少できることである。例えば、後の使用のため
のデバッグ時間の短縮、コード修正時間の短縮、あるい
はコードを書く時間の短縮などが実現される。
けて全てスクラッチからソースプログラムを設計し、書
いた場合と同様なものとなる。ただし、GPCは任意の
ファミリーのモジュールに対して一度のみの設計が要求
されるため、設計者はモジュールの設計に十分な時間を
費すことができ、結果として、効率が非常に良いソース
コードを設計することができる。再使用可能なモジュ
ールのもう1つの特徴は、総合的なソフトウェア製造コ
ストを減少できることである。例えば、後の使用のため
のデバッグ時間の短縮、コード修正時間の短縮、あるい
はコードを書く時間の短縮などが実現される。
ここに説明のシステムは上に説明のソフトウェア再使用
以外の用途にも使用できる。実際、総称要素を修正して
特定の要件に合ったものを生成するような全ての用途に
おいて本発明は真価を発揮する・ これら用途において本発明を活用するためには、ユーザ
はGP(1”仕様記述言語を使用して汎用要素を設計し
、欠に、インスタンシエータを使用して要素の複数の特
定のバージョンを生成する。
以外の用途にも使用できる。実際、総称要素を修正して
特定の要件に合ったものを生成するような全ての用途に
おいて本発明は真価を発揮する・ これら用途において本発明を活用するためには、ユーザ
はGP(1”仕様記述言語を使用して汎用要素を設計し
、欠に、インスタンシエータを使用して要素の複数の特
定のバージョンを生成する。
一例として、銀行が顧客に顧客の信用状態に関する手紙
を送るケースを考えることができる。このような状況に
おいては、GPC設計者は、顧客の名称、顧客が個人で
あるか会社であるか、顧客が銀行とどの程度の期間数シ
引きを行なっているか、顧客の現在及び過去の信用状態
、銀行の現在の方針を反映する変数、その他を総称パラ
メータとして持つ“汎用レター″(general p
urpose 1etter)を作成することができる
。
を送るケースを考えることができる。このような状況に
おいては、GPC設計者は、顧客の名称、顧客が個人で
あるか会社であるか、顧客が銀行とどの程度の期間数シ
引きを行なっているか、顧客の現在及び過去の信用状態
、銀行の現在の方針を反映する変数、その他を総称パラ
メータとして持つ“汎用レター″(general p
urpose 1etter)を作成することができる
。
個別の顧客ベースの手紙をインスタンシエータによって
個々の顧客に対して指定されたこれら総称パラメータの
値の組合せに基づいて合成することができる。
個々の顧客に対して指定されたこれら総称パラメータの
値の組合せに基づいて合成することができる。
例えば、過去の信用状態は良くなかったが現在の信用状
態は改善された。顧客と現在も過去も信用状態の良い顧
客とでは異なる手紙が構成できる。
態は改善された。顧客と現在も過去も信用状態の良い顧
客とでは異なる手紙が構成できる。
可能性は無限であり、どの程度まで高度なGPCを作成
するかによって、全て同一のレターを使用して、数個の
標準フォーマットから多様の非常に個別化された手紙ま
で作成することができる。
するかによって、全て同一のレターを使用して、数個の
標準フォーマットから多様の非常に個別化された手紙ま
で作成することができる。
第1図はコンピュータ システムに実現された本発明の
ブロック図を示す。 〔主要部分の符号の説明〕 102・・・コンパイラ(GPCコンパイラ)104・
・・記憶装置(コンパイルされたGPC用記憶装置) FIG、 /
ブロック図を示す。 〔主要部分の符号の説明〕 102・・・コンパイラ(GPCコンパイラ)104・
・・記憶装置(コンパイルされたGPC用記憶装置) FIG、 /
Claims (1)
- 【特許請求の範囲】 1、供給される総称仕様からソフトウェア プログラム
を生成するための装置において、該システムが 総称ソフトウェア要素を指定する言語命令文を受信する
コンパイラ、 該総称ソフトウェア要素のコンパイルされた要素を格納
するための記憶装置、及び 特定のソフトウェア アプリケーションを指定する言語
命令文を受信するための入力を持つ受信装置を含み、 該コンパイラとの関連において、個々の該総称ソフトウ
ェア要素がプログラム生成のための1つあるいは複数の
ユーザ要求可能サービスに対応し、該サービスが該サー
ビスの具体的な特性を決定する言語命令文の集合によつ
て指定され、与えられた1つの総称ソフトウェア要素が
総称仕様内の命令文及び総称パラメータに対して特定の
アプリケーションによつて供給された値の組合せの下で
具体的ソフトウェア プログラムの生成を制御し、 該記憶装置との関連において、該記憶装置が該コンパイ
ルされた総称ソフトウェア要素を該格納された指定要素
が検索できるように格納し、 該受信装置との関連において、該言語命令文が1つの特
定の総称ソフトウェア要素を指定する直接命令文、間接
命令文、及び1つの特定の総称ソフトウェア要素内の特
定のサービスを指定する要求命令文を含み、個々の間接
命令文がさらに該総称ソフトウェア要素の総称パラメー
タに対応する特定の値を指定し、該受信装置がさらに 該命令文の間接命令文の受信に応答して該コンパイルさ
れた総称ソフトウェア要素のための記憶装置から該指定
された総称ソフトウェア要素のコード化された仕様の位
置を突きとめるための検出装置、 該検出されたコード化された仕様と該対応する間接命令
文からの該指定されたパラメータ値とを互いに関連させ
るための関連装置、 1つの要求命令文の受信に応答して該検出された該総称
ソフトウェア要素の1つの中の該要求命令文と関連する
サービスに対応する命令文の集合の位置を検出するため
の第2の検出装置、及び 該検出された命令文の集合による制御下においてその出
力の所に間接及び要求命令文を含まない言語命令文を持
つ該特定のソフトウェア アプリケーションの具体的バ
ージョンを生成するための生成装置を含むことを特徴と
するソフトウェア プログラムを生成するための装置。 2、特許請求の範囲第1項に記載の装置において、 該特定のソフトウェア アプリケーションが個々が同一
の総称ソフトウェア要素を引用する複数の間接命令文を
含み、これら個々の間接命令文が異なるセットの総称パ
ラメータ値を指定し、 該特定のソフトウェア アプリケーションを指定する言
語命令文を受信する該受信装置が個々の該引用された総
称ソフトウェア要素に対して同一の総称ソフトウェア要
素の複数の異なる実例を生成するための装置、及び該総
称ソフトウェア要素の個々の実例によつて提供される同
一サービスに対して後に提供されるユーザ要求が個々の
サービスの個々の実例を一意的に引用できるように異な
る名称を与えるための装置を含むことを特徴とする装置
。 3、特許請求の範囲第1項に記載の装置において、 該言語命令文の集合が間接命令文及びそれらの同一ある
いは別の総称ソフトウェア要素を引用する要求命令文を
挿入する命令を含み、該受信装置が該生成されたソフト
ウェア アプリケーション内に加えられた間接命令文あ
るいは要求命令文が存在しないか監視し、該生成された
ソフトウェア アプリ・ケーションを該受信装置の該入
力に再び加えるための装置を含むことを特徴とする装置
。 4、供給される総称仕様からソフトウェア プログラム
を生成するための方法において、該方法が総称ソフトウ
ェア要素を指定する受信された言語命令文をコンパイル
するステップ、該総称ソフトウェア要素のコンパイルさ
れた要素を格納するステップ、及び 特定のソフトウェア アプリケーションを指定する言語
命令文を受信するステップを含み、 該コンパイルするステップとの関連において、個々の総
称ソフトウェア要素がプログラム生成のための1つある
いは複数のユーザ要求可能サービスに対応し、該サービ
スが該サービスの具体的な特性を決定する言語命令文の
集合によつて指定され、与えられた1つの総称ソフトウ
ェア要素が総称仕様内の命令文及び総称パラメータに対
して特定のアプリケーションによつて供給された値の組
合せの下で具体的ソフトウェア プログラムの生成を制
御し、 該記憶ステップとの関連において、該格納された指定要
素が検索できるように格納され、 該受信ステップとの関連において、該言語命令文が1つ
の特定の総称ソフトウェア要素を指定する直接命令文、
間接命令文、及び1つの特定の総称ソフトウェア要素内
の特定のサービスを指定する要求命令文を含み、個々の
間接命令文がさらに該総称ソフトウェア要素の総称パラ
メータに対応する特定の値を指定し、該受信ステップが
さらに該命令文の間接命令文の受信に応答して該コンパ
イルされた総称ソフトウェア要素のための記憶装置から
該指定された総称ソフトウェア要素のコード化された仕
様の位置を突きとめるステップ、 該検出されたコード化された仕様と該対応する間接命令
文からの該指定されたパラメータ値とを互いに関連させ
るステップ、 1つの要求命令文の受信に応答して該検出された該総称
ソフトウェア要素の1つの中の該要求命令文と関連する
サービスに対応する命令文の集合の位置を検出するステ
ップ、及び 該検出された命令文の集合による制御下において間接及
び要求命令文を含まない言語命令文を持つ該特定のソフ
トウェア アプリケーションの具体的バージョンを生成
するステップを含むことを特徴とするソフトウェア プ
ログラムを生成するための方法。 5、特許請求の範囲第4項に記載の方法において、 該特定のソフトウェア アプリケーションが、個々が同
一の総称ソフトウェア要素を引用する複数の間接命令文
が異なるセットの総称パラメータ値を指定し、 該特定のソフトウェア アプリケーションを指定する言
語命令文を受信するステップが個々の該引用された総称
ソフトウェア要素に対して同一の総称ソフトウェア要素
の複数の異なる実例を生成するステップ、及び該総称ソ
フトウェア要素の個々の実例によつて提供される同一サ
ービスに対して後に提供されるユーザ要求が個々のサー
ビスの個々の実例を一意的に引用できるように異なる名
称を与えるステップを含むことを特徴とする方法。 6、特許請求の範囲第4項に記載の方法において、 該言語命令文の集合が間接命令文及びそれらの同一ある
いは別の総称ソフトウェア要素を引用する要求命令文を
挿入する命令を含み、該受信ステップが該生成されたソ
フトウェア アプリケーション内に加えられた間接命令
文あるいは要求命令文が存在しないか監視するステップ
、及び該生成されたソフトウェア アプリケーションを
該受信装置の該入力に再び加えるステップを含むことを
特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US785787 | 1985-10-08 | ||
US06/785,787 US4734854A (en) | 1985-10-08 | 1985-10-08 | System for generating software source code components |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS6288033A true JPS6288033A (ja) | 1987-04-22 |
JP2609093B2 JP2609093B2 (ja) | 1997-05-14 |
Family
ID=25136617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP61238162A Expired - Fee Related JP2609093B2 (ja) | 1985-10-08 | 1986-10-08 | ソフトウエアプログラムを生成するための装置及びその方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US4734854A (ja) |
EP (1) | EP0219993A3 (ja) |
JP (1) | JP2609093B2 (ja) |
KR (1) | KR930008769B1 (ja) |
CA (1) | CA1273708A (ja) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE467229B (sv) * | 1983-08-19 | 1992-06-15 | Kurt Katzeff | Anordning foer bildande av en information och/eller instruktion avsedd att inmatas i en datamaskins programminne |
US5202996A (en) * | 1985-10-11 | 1993-04-13 | Hitachi, Ltd. | Software structuring system and method by data table translation |
US4860203A (en) * | 1986-09-17 | 1989-08-22 | International Business Machines Corporation | Apparatus and method for extracting documentation text from a source code program |
US5123103A (en) * | 1986-10-17 | 1992-06-16 | Hitachi, Ltd. | Method and system of retrieving program specification and linking the specification by concept to retrieval request for reusing program parts |
US5133072A (en) * | 1986-11-13 | 1992-07-21 | Hewlett-Packard Company | Method for improved code generation in reduced instruction set computers |
US5191646A (en) * | 1986-11-20 | 1993-03-02 | Hitachi, Ltd. | Display method in software development support system |
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
NZ224848A (en) * | 1987-07-15 | 1995-07-26 | Computer Associates Internatio | Application software created from defined modules of code |
JPS6437621A (en) * | 1987-07-20 | 1989-02-08 | Ibm | Updating of program |
US4961133A (en) * | 1987-11-06 | 1990-10-02 | Visystems, Inc. | Method for providing a virtual execution environment on a target computer using a virtual software machine |
US5067072A (en) * | 1987-11-06 | 1991-11-19 | Visystems, Inc. | Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies |
US5099413A (en) * | 1987-12-12 | 1992-03-24 | Sadashiro Sakai | System which reads type and position of task element marks on a matrix of program tasks for automatically generating programs |
JP2624753B2 (ja) * | 1988-03-18 | 1997-06-25 | 株式会社日立製作所 | 上位仕様書作成方法 |
US5117496A (en) * | 1988-05-23 | 1992-05-26 | Hewlett-Packard Company | Method for recording and replaying mouse commands by recording the commands and the identities of elements affected by the commands |
JPH022419A (ja) * | 1988-06-10 | 1990-01-08 | Hitachi Ltd | プログラム情報管理方式 |
US5051893A (en) * | 1988-07-11 | 1991-09-24 | Digital Equipment Corporation | System for processing data to facilitate the creation of executable images |
WO1990004227A1 (en) * | 1988-10-12 | 1990-04-19 | Expressway, Inc. | Software manufacturing system |
US5230049A (en) * | 1988-11-29 | 1993-07-20 | International Business Machines Corporation | Program source code translator |
CA2002201C (en) * | 1988-12-06 | 1999-04-27 | John Charles Goettelmann | Translation technique |
US5161216A (en) * | 1989-03-08 | 1992-11-03 | Wisconsin Alumni Research Foundation | Interprocedural slicing of computer programs using dependence graphs |
US5193191A (en) * | 1989-06-30 | 1993-03-09 | Digital Equipment Corporation | Incremental linking in source-code development system |
US5325531A (en) * | 1989-06-30 | 1994-06-28 | Digital Equipment Corporation | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines |
EP0416768B1 (en) * | 1989-09-08 | 1998-06-17 | Digital Equipment Corporation | Thread private memory storage for multi-thread digital data processors |
CA2025131A1 (en) * | 1989-09-28 | 1991-03-29 | John W. White | Portable and dynamic distributed applications architecture |
DE69031936T2 (de) * | 1989-11-17 | 1998-06-10 | Digital Equipment Corp | System und Verfahren zur Speicherung von Firmware in einem adressunabhängigen Format |
JPH05504858A (ja) * | 1989-11-30 | 1993-07-22 | シーア テクノロジーズ,インコーポレイティド | 計算機支援ソフトウェア工学ファシリティ |
US5495610A (en) * | 1989-11-30 | 1996-02-27 | Seer Technologies, Inc. | Software distribution system to build and distribute a software release |
GB2242293A (en) * | 1990-01-05 | 1991-09-25 | Apple Computer | Apparatus and method for dynamic linking of computer software components |
US5204960A (en) * | 1990-01-08 | 1993-04-20 | Microsoft Corporation | Incremental compiler |
US5175856A (en) * | 1990-06-11 | 1992-12-29 | Supercomputer Systems Limited Partnership | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
US5699310A (en) * | 1990-06-29 | 1997-12-16 | Dynasty Technologies, Inc. | Method and apparatus for a fully inherited object-oriented computer system for generating source code from user-entered specifications |
US5161222A (en) * | 1990-08-20 | 1992-11-03 | Human Microprocessing, Inc. | Software engine having an adaptable driver for interpreting variables produced by a plurality of sensors |
JP2720904B2 (ja) * | 1990-08-31 | 1998-03-04 | 富士通株式会社 | 自己記述によるデータベース管理システムの構成方法および開発/変更方法 |
US5175432A (en) * | 1990-10-31 | 1992-12-29 | Gruman Aerospace Corporation | Infrared detector module test system |
EP0501613A3 (en) * | 1991-02-28 | 1993-09-01 | Hewlett-Packard Company | Heterogeneous software configuration management apparatus |
JPH04280320A (ja) * | 1991-03-08 | 1992-10-06 | Nec Corp | プログラム自動生成装置 |
JP2811990B2 (ja) * | 1991-04-19 | 1998-10-15 | 三菱電機株式会社 | プログラム処理装置及びプログラム処理方法 |
US5333298A (en) * | 1991-08-08 | 1994-07-26 | Honeywell Inc. | System for making data available to an outside software package by utilizing a data file which contains source and destination information |
US5632022A (en) * | 1991-11-13 | 1997-05-20 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Encyclopedia of software components |
CA2077273C (en) * | 1991-12-12 | 1996-12-03 | Mike H. Conner | Language neutral objects |
US5485615A (en) * | 1992-06-10 | 1996-01-16 | Telefonaktiebolaget L M Ericsson | System and method of interactively developing desired computer programs by using plurality of tools within a process described in graphical language |
US5671415A (en) * | 1992-12-07 | 1997-09-23 | The Dow Chemical Company | System and method for facilitating software development |
US5740405A (en) * | 1992-12-17 | 1998-04-14 | Microsoft Corporation | Method and system for providing data compatibility between different versions of a software program |
JPH06332680A (ja) * | 1993-05-21 | 1994-12-02 | Tadao Shogetsu | プログラム自動生成装置 |
US6178547B1 (en) | 1993-06-17 | 2001-01-23 | Metaware Incorporated | Method and apparatus for generating non-redundant symbolic debug information in computer programs |
US6425124B1 (en) * | 1993-11-08 | 2002-07-23 | Matsushita Electric Industrial Co. Ltd. | Resource allocation device for reducing the size and run time of a machine language program |
TW295761B (ja) * | 1994-06-14 | 1997-01-11 | Ericsson Telefon Ab L M | |
US5579318A (en) * | 1994-06-30 | 1996-11-26 | Bellsouth Corporation | Processes and apparatus for maintaining data concurrence between databases in telecommunications networks |
US5546574A (en) * | 1994-06-30 | 1996-08-13 | At&T Corporation | Peer-to-peer data concurrence processes and apparatus |
US5748973A (en) * | 1994-07-15 | 1998-05-05 | George Mason University | Advanced integrated requirements engineering system for CE-based requirements assessment |
KR100221374B1 (ko) | 1995-01-19 | 1999-09-15 | 포만 제프리 엘 | 이벤트를 효율적으로 처리하는 데이타 처리 시스템 및 그의 방법과 저장장치 |
US5724556A (en) * | 1995-04-14 | 1998-03-03 | Oracle Corporation | Method and apparatus for defining and configuring modules of data objects and programs in a distributed computer system |
US5806074A (en) * | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US5987247A (en) * | 1997-05-09 | 1999-11-16 | International Business Machines Corporation | Systems, methods and computer program products for building frameworks in an object oriented environment |
US6041332A (en) * | 1997-12-31 | 2000-03-21 | Alcatel Usa Sourcing, L.P. | Product-independent performance monitoring tool kit |
EP1073954A2 (de) * | 1998-04-17 | 2001-02-07 | Siemens Aktiengesellschaft | System und verfahren zur flexiblen zuordnung von oberflächenkomponenten und verarbeitungsobjekten |
IL142587A0 (en) * | 1998-10-13 | 2002-03-10 | Codagen Technologies Corp | Component-based source code generator |
US6742175B1 (en) * | 1998-10-13 | 2004-05-25 | Codagen Technologies Corp. | Component-based source code generator |
DE19907328C2 (de) * | 1999-02-20 | 2002-10-24 | Johannes Reichardt | Verfahren und System zur visuellen Programmierung |
AUPP949599A0 (en) * | 1999-03-30 | 1999-04-22 | Griffith University | Visual architecture software language |
AU4354000A (en) * | 1999-04-16 | 2000-11-02 | Woosh! Inc. | Adaptable component architecture |
US7334216B2 (en) * | 2000-04-04 | 2008-02-19 | Sosy, Inc. | Method and apparatus for automatic generation of information system user interfaces |
US6681383B1 (en) * | 2000-04-04 | 2004-01-20 | Sosy, Inc. | Automatic software production system |
US6505342B1 (en) * | 2000-05-31 | 2003-01-07 | Siemens Corporate Research, Inc. | System and method for functional testing of distributed, component-based software |
US6986148B2 (en) * | 2001-07-17 | 2006-01-10 | Appforge, Inc. | Methods and systems for providing platform-independent shared software components for mobile devices |
US7613716B2 (en) * | 2001-07-20 | 2009-11-03 | The Mathworks, Inc. | Partitioning for model-based design |
US7120898B2 (en) * | 2003-06-26 | 2006-10-10 | Microsoft Corporation | Intermediate representation for multiple exception handling models |
US7707566B2 (en) * | 2003-06-26 | 2010-04-27 | Microsoft Corporation | Software development infrastructure |
US7305666B2 (en) * | 2003-07-23 | 2007-12-04 | Microsoft Corporation | Description language for an extensible compiler and tools infrastructure |
US7685581B2 (en) * | 2003-06-27 | 2010-03-23 | Microsoft Corporation | Type system for representing and checking consistency of heterogeneous program components during the process of compilation |
US7559050B2 (en) * | 2003-06-30 | 2009-07-07 | Microsoft Corporation | Generating software development tools via target architecture specification |
US7086041B2 (en) * | 2003-06-27 | 2006-08-01 | Microsoft Corporation | Extensible type system for representing and checking consistency of program components during the process of compilation |
US7788652B2 (en) * | 2003-06-27 | 2010-08-31 | Microsoft Corporation | Representing type information in a compiler and programming tools framework |
US20060059459A1 (en) * | 2004-09-13 | 2006-03-16 | Microsoft Corporation | Generating solution-based software documentation |
US7802227B1 (en) * | 2006-02-23 | 2010-09-21 | Intervoice Limited Partnership | Customized control building |
US7934193B2 (en) * | 2006-04-11 | 2011-04-26 | Rojer Alan S | Processing a module specification to produce a module definition |
US8091069B2 (en) * | 2006-04-11 | 2012-01-03 | Rojer Alan S | Module specification language and meta-module |
US7962888B2 (en) * | 2006-04-11 | 2011-06-14 | Rojer Alan S | Producing unitary class definitions from module specifications |
US8589869B2 (en) | 2006-09-07 | 2013-11-19 | Wolfram Alpha Llc | Methods and systems for determining a formula |
EP1918812A1 (en) * | 2006-11-01 | 2008-05-07 | Hewlett-Packard Development Company, L.P. | A software development system |
US8490068B1 (en) * | 2007-01-26 | 2013-07-16 | Intuit Inc. | Method and system for feature migration |
US9213768B1 (en) | 2009-05-15 | 2015-12-15 | Wolfram Alpha Llc | Assumption mechanism for queries |
US8601015B1 (en) | 2009-05-15 | 2013-12-03 | Wolfram Alpha Llc | Dynamic example generation for queries |
US8484015B1 (en) | 2010-05-14 | 2013-07-09 | Wolfram Alpha Llc | Entity pages |
US8812298B1 (en) | 2010-07-28 | 2014-08-19 | Wolfram Alpha Llc | Macro replacement of natural language input |
US9053099B2 (en) * | 2010-08-10 | 2015-06-09 | International Business Machines Corporation | Method for validating equivalent data structures |
US9064134B1 (en) * | 2010-12-06 | 2015-06-23 | Adobe Systems Incorporated | Method and apparatus for mitigating software vulnerabilities |
US9069814B2 (en) | 2011-07-27 | 2015-06-30 | Wolfram Alpha Llc | Method and system for using natural language to generate widgets |
US9734252B2 (en) | 2011-09-08 | 2017-08-15 | Wolfram Alpha Llc | Method and system for analyzing data using a query answering system |
US9851950B2 (en) | 2011-11-15 | 2017-12-26 | Wolfram Alpha Llc | Programming in a precise syntax using natural language |
DE102012207668A1 (de) | 2012-05-09 | 2013-11-14 | Robert Bosch Gmbh | Computerimplementiertes Verfahren zum Generieren von Software, Batterie und Kraftfahrzeug |
US9405424B2 (en) | 2012-08-29 | 2016-08-02 | Wolfram Alpha, Llc | Method and system for distributing and displaying graphical items |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4463423A (en) * | 1982-07-14 | 1984-07-31 | Burroughs Corporation | Method of transforming high level language statements into multiple lower level language instruction sets |
-
1985
- 1985-10-08 US US06/785,787 patent/US4734854A/en not_active Expired - Lifetime
-
1986
- 1986-09-29 CA CA000519295A patent/CA1273708A/en not_active Expired - Lifetime
- 1986-09-30 EP EP86307473A patent/EP0219993A3/en not_active Ceased
- 1986-10-08 JP JP61238162A patent/JP2609093B2/ja not_active Expired - Fee Related
- 1986-10-08 KR KR1019860008440A patent/KR930008769B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR870004383A (ko) | 1987-05-09 |
JP2609093B2 (ja) | 1997-05-14 |
KR930008769B1 (ko) | 1993-09-15 |
US4734854A (en) | 1988-03-29 |
EP0219993A3 (en) | 1990-03-14 |
CA1273708A (en) | 1990-09-04 |
EP0219993A2 (en) | 1987-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPS6288033A (ja) | ソフトウエアプログラムを生成するための装置及びその方法 | |
US10970474B2 (en) | Method and system for editing text with a find and replace function leveraging derivations of the find and replace input | |
Griswold et al. | The SNOBOL4 Programming | |
Holub | Compiler design in C | |
US5701487A (en) | Method and apparatus for displaying locations of errors detected inside software macro calls | |
US5276880A (en) | Method for parsing and representing multi-versioned computer programs, for simultaneous and synchronous processing of the plural parses | |
US20060031820A1 (en) | Method for program transformation and apparatus for COBOL to Java program transformation | |
EP0204942A2 (en) | Compiler for a source program, a method of making the same and its use | |
US20080007779A1 (en) | Method and system for generating executable code for formatting and printing complex data structures | |
JPH0383153A (ja) | メツセージ処理システム及び方法 | |
Miecznikowski et al. | Decompiling Java using staged encapsulation | |
JPH1083289A (ja) | プログラミング・エイド | |
US5113342A (en) | Computer method for executing transformation rules | |
Weil et al. | Efficient compilation of Esterel for real-time embedded systems | |
CN114503073A (zh) | 将用过程编程语言编写的程序自动转换为数据流图及相关***和方法 | |
US20030196195A1 (en) | Parsing technique to respect textual language syntax and dialects dynamically | |
JP2879099B1 (ja) | 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置 | |
JP7059757B2 (ja) | Api処理方法、端末、api処理プログラム | |
GB2351367A (en) | Generating code for processing a database | |
JPH0512034A (ja) | 機械で読取り可能な情報の翻訳を可能にする方法 | |
Self | A ex {An Ada Lexical Analyzer Generator | |
CN116701433A (zh) | 一种函数文本解析处理方法、***、终端及存储介质 | |
Butler et al. | YooccLa: a parser generator for L-attributed grammars | |
Popovich et al. | Experiences with an Environment Generation System. | |
Gunnerson | Other Language Details |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |