JP3124000B2 - 構造型の利用者定義演算のインライン展開装置 - Google Patents

構造型の利用者定義演算のインライン展開装置

Info

Publication number
JP3124000B2
JP3124000B2 JP11067538A JP6753899A JP3124000B2 JP 3124000 B2 JP3124000 B2 JP 3124000B2 JP 11067538 A JP11067538 A JP 11067538A JP 6753899 A JP6753899 A JP 6753899A JP 3124000 B2 JP3124000 B2 JP 3124000B2
Authority
JP
Japan
Prior art keywords
user
inline expansion
information table
defined operation
operator
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.)
Expired - Fee Related
Application number
JP11067538A
Other languages
English (en)
Other versions
JP2000267858A (ja
Inventor
英章 五木田
Original Assignee
エヌイーシーソフト株式会社
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 エヌイーシーソフト株式会社 filed Critical エヌイーシーソフト株式会社
Priority to JP11067538A priority Critical patent/JP3124000B2/ja
Publication of JP2000267858A publication Critical patent/JP2000267858A/ja
Application granted granted Critical
Publication of JP3124000B2 publication Critical patent/JP3124000B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンパイラのイン
ライン展開に関し、特にFORTRANコンパイラの構造型同
士の演算を行う利用者定義演算を含む式のインライン展
開装置に関する。
【0002】
【従来の技術】従来、ソースプログラム中に構造型同士
の利用者定義演算がある場合にそれを構造型関数の手続
呼び出しとして翻訳し、インライン展開を行う場合はこ
の構造型関数の引用に対してインライン展開を行ってい
る。構造型関数の結果の受け渡しはメモリを介して行う
ため、この関数をインライン展開する場合、結果用の作
業領域を使用してインライン展開をしていた。
【0003】
【発明が解決しようとする課題】第1の問題点は、処理
時間が長くなる可能性があることである。その理由は、
利用者定義演算の結果をいったん作業領域に書き込み、
その値を代入文の左辺の構造体変数へ書き戻すという展
開コードを生成しているためである。第2の問題点は、
大きな記憶領域を消費する可能性があることである。そ
の理由は、利用者定義演算の結果の大きさが巨大であっ
た場合にそれと同じ大きさの記憶領域を必要とするため
である。本発明はこのような背景の下になされたもの
で、本発明の目的は、ソースプログラム中の構造型同士
を演算する利用者定義演算をインライン展開するとき、
作業領域を使用しないコードを生成するコンパイラを提
供することにある。
【0004】
【課題を解決するための手段】本発明のインライン展開
方式は、構造型同士の利用者定義演算をインライン展開
する場合の作業領域を使用しないコードを生成するコン
パイラを与える。より具体的には、利用者定義演算に対
応する手続の定義に対し、利用者定義演算のインライン
展開に必要な情報を生成する利用者定義演算インライン
展開情報生成部(図1の123)と、利用者定義演算イ
ンライン展開情報生成部で生成した情報を基に中間テキ
ストを生成する利用者定義演算インライン展開処理部
(図1の124)を有する。利用者定義演算インライン
展開処理部では、利用者定義演算インライン展開情報テ
ーブルを基に、利用者定義演算子を使用した代入文を、
対応する組込み演算子を使用した代入文の並びに置換す
ることにより、作業領域を使用しないコードを生成す
る。請求項1に記載の発明は、FORTRANプログラム言語
で記述されたソースプログラムを入力し、構文解析を行
い第1の中間テキストを生成する構文解析部と、引用仕
様宣言を入力し、それが利用者定義演算の宣言であると
き、利用者定義演算子情報テーブルを生成して、該テー
ブルに引用仕様本体の数とMODULE PROCEDURE文に指定さ
れている手続名の数との和およびINTERFACE文のOPERATO
R句に指定されている名前を設定し、引用仕様本体で宣
言された手続名およびMODULE PROCEDURE文に指定された
名前を配列設定するとともに、前記第1の中間テキスト
を出力する引用仕様宣言処理部と、この引用仕様宣言処
理部から第1の中間テキストを入力し、利用者定義演算
インライン展開情報テーブルを生成するとともに、該テ
ーブルに利用者定義演算子名と、利用者定義演算の対象
となる構造型の型名と、利用者定義演算に対応する手続
内の代入文の数と、利用者定義演算子に対して置き換え
る組み込み演算子と、構造型の成分の名前と、演算子の
左側の演算対象と右側の演算対象とを入れ換えるか否か
を表す理論値とを設定する利用者定義演算インライン展
開情報生成部と、この利用者定義演算インライン展開情
報生成部から第1の中間テキストを入力し、上記利用者
定義演算インライン展開情報テーブルと上記利用者定義
演算子情報テーブルとを参照して、作業領域を使用しな
いインライン展開が可能であるか否かを判定し、利用者
定義演算を使用した代入文の第1中間テキストからイン
ライン展開用の第2中間テキストを生成して、置き換え
ることによりインライン展開を行う利用者定義演算イン
ライン展開処理部とを備えたことを特徴とする構造型の
利用者定義演算のインライン展開方式である。請求項2
に記載の発明は、請求項1に記載の構造型の利用者定義
演算のインライン展開装置において、上記引用仕様宣言
処理部は、与えられた引用仕様宣言が利用者定義演算の
宣言であれば利用者定義演算子情報テーブルを生成する
ことを特徴としている。請求項3に記載の発明は、請求
項1に記載の構造型の利用者定義演算のインライン展開
装置において、上記利用者定義演算インライン展開情報
生成部は、第1の中間テキストを利用者定義演算インラ
イン展開処理部に与えるに際し、該第1中間テキストが
対応手続きに関する所定の条件を満たしている場合に利
用者定義演算インライン展開情報テーブルを生成する
とを特徴としている。請求項4に記載の発明は、請求項
1に記載の利用者定義演算のインライン展開装置上記利
用者定義演算インライン展開処理部において、上記第1
中間テキストと上記利用者定義演算インライン展開情報
テーブルを入力し、利用者定義演算を使用した代入文が
代入文に関する所定の条件にすべて適合するときには、
上記利用者定義演算インライン展開情報テーブルを基
に、利用者定義演算子を使用した代入文を、対応する組
込み演算子を使用した代入文の並びに置換することによ
り、作業領域を使用しないコードを生成することを特徴
としている。
【0005】
【発明の実施の形態】本発明の実施の形態について図面
を参照して詳細に説明する。図1は本発明のコンパイラ
の構成を示すブロック図である。構文解析部121では
ソースプログラム11を入力し構文解析を行い、第1の
中間テキスト122を生成する。このとき、代入文に対
する第1の中間テキスト122を二分木構造で生成し、
ソースプログラムに引用仕様宣言があれば引用仕様宣言
処理部1211にその引用仕様宣言を与える。 引用仕
様宣言処理部1211は与えられた引用仕様宣言が利用
者定義演算の宣言であれば、利用者定義演算子情報テー
ブル127を生成し、その引用仕様宣言を基に次のよう
に設定する。
【0006】図2は本発明の利用者定義演算子情報テー
ブルの構造図である。 - 引用仕様本体の数とMODULE PROCEDURE文に指定されて
いる手続名の数の和を利用者定義演算子情報テーブル図
2の対応手続数21に設定する。 - INTERFACE文のOPERTOR句に指定されている名前を利用
者定義演算子情報テーブル図2の利用者定義演算子22
に設定する。 - 引用仕様本体で宣言された手続名、MODULE PROCEDURE
文に指定された名前を利用者定義演算子情報テーブル図
2の対応手続名23に配列として設定する。
【0007】利用者定義演算インライン展開情報生成部
123は第1の中間テキスト122と利用者定義演算子
情報テーブル127を入力し第1の中間テキスト122
を利用者定義演算インライン展開処理部124に与え
る。このとき、第1の中間テキストが利用者定義演算子
情報テーブル図2の対応手続名23に登録されている手
続に対するものであれば、その手続が以下の条件を全て
満たしているか検査し、満たしているなら利用者定義演
算インライン展開情報テーブル128を生成する。 (1) 手続が関数で、結果変数名、仮引数が同じ型の構造
型である。 (2) 手続の実行文が以下の条件を全て満たす代入文のみ
で構成されている。 - 左辺が結果変数名の構造体成分である。 - 右辺に現れる演算子は組込み演算子1つのみである。 - 右辺における演算対象は、左側と右側が異なる仮引数
であり、共に構造体成分である。 - 左辺の結果変数、右辺の左側、右側の演算対象に現れ
る構造型の成分名は全て同じである。 - 左辺の結果変数、右辺の左側、右側の演算対象に現れ
る構造体が配列のとき全て形状が一致しており、かつ添
字が使用されていない。
【0008】図3は本発明の利用者定義演算インライン
展開情報テーブルの構造図である。1つの利用者定義演
算インライン展開情報テーブル128(図3)は利用者定
義演算子311、構造型型名312、代入文の数313
と、利用者定義演算に対応する手続の代入文の数だけそ
の代入文に対して作られる演算子の置き換え対象32
1、構造型の成分名322、演算順序323のフィール
ドから構成される。下記に各々のフィールドについて説
明する。・ [フィールド名] 利用者定義演算子 [説明] 利用者定義演算子名。・ [フィールド名] 構造型型名 [説明] 利用者定義演算の対象となる構造型の型名。・ [フィールド名] 代入文の数 [説明] 利用者定義演算に対応する手続内の代入文の
数。・ [フィールド名] 演算子の置き換え対象 [説明] 利用者定義演算子に対して置き換える組込み
演算子。・ [フィールド名] 構造型の成分名 [説明] 構造型の成分の名前。・ [フィールド名] 演算順序 [説明] 演算子の左側の演算対象と右側の演算対象を
入れ換えるか否かを表す理論値。入れ換えないなら"
真"、入れ換えるなら"偽"の値が入る。
【0009】利用者定義演算インライン展開情報テーブ
ル128(図3)の各フィールドには、利用者定義演算イ
ンライン展開情報生成部123で生成時に以下のように
設定する。 - 利用者定義演算子情報テーブル図2の利用者定義演算
子22を、利用者定義演算インライン展開情報テーブル
図3の利用者定義演算子311 に設定する。 - 手続の型名を利用者定義演算インライン展開情報テー
ブル図3の構造型型名312に設定する。 - 手続の代入文の数を数え、その数を利用者定義演算イ
ンライン展開情報テーブル図3の代入文の数313に設
定する。 - 代入文に対応する第1の中間テキストである二分木構
造を基に代入文の右辺に現れる組込み演算子を利用者定
義演算インライン展開情報テーブル図3の演算子の置き
換え対象321に設定する。 - 代入文に対する第1の中間テキストの左辺の成分名を
利用者定義演算インライン展開情報テーブル図3の構造
型の成分名322に設定する。 - 代入文に対する第1の中間テキストと手続の宣言文に
対する第1の中間テキストを基に手続の仮引数の並び順
序と代入文の右辺の左側、右側の演算対象に現れる変数
の並び順序が同じであるなら"真"、異なるなら"偽"の値
を利用者定義演算インライン展開情報テーブル図3の演
算順序323に設定する。
【0010】利用者定義演算インライン展開処理部12
4は、第1の中間テキスト122と利用者定義演算イン
ライン展開情報テーブル128を入力し、利用者定義演
算を使用した代入文が以下の条件に全て適合するときに
本発明の作業領域を使用しないインライン展開が可能で
あると判断する。 (3) 利用者定義演算インライン展開情報テーブル128
がその利用者定義演算に対応する手続に対して生成され
ている. (4) 同じ構造型の変数同士の利用者定義演算が代入文の
右辺に現れる. (5) 利用者定義演算子を使用している代入文の右辺の演
算子は全て同一の利用者定義演算子のみである。
【0011】利用者定義演算インライン展開処理部12
4はインライン展開が可能と判断したならば、利用者定
義演算インライン展開情報テーブル図3の代入文の数3
13の値の数だけ利用者定義演算を使用した代入文に対
する二分木構造の第1の中間テキストと同じ構造を生成
し、その生成したすべての二分木構造の中間テキストの
データを下記手順で置き換え、インライン展開用の二分
木構造の中間テキストを生成する。 ・ 生成した二分木構造の左辺に対して、左辺の変数の
後に、利用者定義演算インライン展開情報テーブル図3
の構造型の成分名322に設定されている名前を部分参
照としてつけた変数を生成して、左辺の変数と置き換え
る。 ・ 生成した二分木構造の右辺に対して、二分木構造を
たどり以下の処理を行う。 - 二分木構造における葉の部分にあたる変数に対して、
その変数の後に利用者定義演算インライン展開情報テー
ブル図3の構造型の成分名322に設定されている構造
型の成分名を部分参照としてつけた変数を生成して演算
対象の変数と置き換える。 - 二分木構造における節点にあたる利用者定義演算子
に対して、その利用者定義演算子を利用者定義演算イン
ライン展開情報テーブル図3の演算子の置き換え対象3
21に設定されている組込み演算子と置き換える。利用
者定義演算インライン展開情報テーブル図3の演算順序
323の値が"偽"であるなら演算子の左側の演算対象と
右側の演算対象を入れ換える。インライン展開用の二分
木構造を生成し終わったら利用者定義演算を使用した代
入文に対応する二分木構造の第1の中間テキストを、イ
ンライン展開用に生成した二分木構造の中間テキストで
置き換えることによってインライン展開を行い、第2の
中間テキスト125としてオブジェクト生成部126に
与える。
【0012】次に本発明の実施例について図面を参照し
て詳細に説明する。図4は本実施例のソースプログラム
である。構文解析部121では、図4のソースプログラ
ムを入力し、代入文である文(10)に対して二分木構造図
5の中間テキストを生成する。文(1)、文(2)、文(3)は
引用仕様宣言であるので引用仕様宣言処理部1211に
引用仕様宣言を与える。引用仕様宣言処理部1211で
は、文(1)のINTERFACE文が利用者定義演算の宣言である
ため利用者定義演算子情報テーブル図6を生成し、以下
の処理で各フィールドに値を設定する。 - 文(1)のINTERFACE文のOPERATOR句の".op."を利用者
定義演算子62に設定する。 - 引用使用本体の数"0"と文(2)のMODULE PROCEDURE文
に指定された手続名の数"1"の和である"1"を対応手続数
61に設定する。 - 文(2)のMODULE PROCEDURE文に指定された名前"i_op"
を対応手続名63に設定する。
【0013】かくして値が設定された後の利用者定義演
算子情報テーブルの構造を図6に示す。利用者定義演算
インライン展開情報生成部123では第1の中間テキス
トから手続"i_op"が利用者定義演算子情報テーブル図6
の対応手続名63の内容と一致し、以下のように条件を
満たすため、利用者定義演算インライン展開情報テーブ
ル図7を生成する。 (A) 文(4),(5),(6)より、手続"i_op"が関数であり、結
果変数"i_op"、仮引数"X","Y"が同じ構造型"t1"であ
る。 (B) 文(7)の実行文に対して以下のとおりである。 - 左辺"i_op%i" は結果変数"i_op"の構造体成分であ
る。 - 右辺に現れる演算子は組込み演算子"+"1つのみであ
る。 - 右辺における左側の演算対象"X%i"と右側の演算対象"
Y%i"は異なる仮引数でありそれぞれ"X","Y"の構造体成
分である。 - 左辺の結果変数"i_op%i"、右辺の左側の演算対象"X%
i"、右側の演算対象"Y%i"の構造型の成分名はいずれも
同じ"i"である。 (C) 文(8)の実行文に対して以下のとおりである。 - 左辺"i_op%j" は結果変数"i_op"の構造体成分である - 右辺に現れる演算子は組込み演算子"-"1つのみであ
る - 右辺における左側の演算対象"Y%j"と右側の演算対象"
X%j"は異なる仮引数でありそれぞれ"X","Y"の構造体成
分である。 - 左辺の結果変数"i_op%j"、右辺の左側の演算対象"Y%
j"、右側の演算対象"X%j"の構造型の成分名はいずれも
同じ"j"である。 - 左辺の結果変数、右辺の左側、右側の演算対象に現れ
る構造体は配列で全て形状が一致しておりかつ添字が使
用されていない。
【0014】利用者定義演算インライン展開情報テーブ
ル図7の各フィールドに対して以下の処理で値を設定す
る。 - 利用者定義演算子情報テーブル図6の利用者定義演
算子62に設定されている".op."を利用者定義演算イン
ライン展開情報テーブル図7の利用者定義演算子711
に設定する。 - 文(6)より、手続"i_op"の型名"t1"を利用者定義演算
インライン展開情報テーブル図7の構造型型名712に
設定する。 - 文(7),(8)より、手続の代入文の数"2"を利用者定義
演算インライン展開情報テーブル図7の代入文の数71
3に設定する。 - 文(7)の代入文に対応する二分木構造 図5の情報を
基に代入文の右辺に現れる組み込み演算子"+"を利用者
定義演算インライン展開情報テーブル図7の演算子の置
換え対象721に設定する。 - 文(7)の代入文の左辺の成分名"i"を利用者定義演算
インライン展開情報テーブル図7の構造型の成分名72
2に設定する。 - 文(7)の代入文の右辺の左側、右側の演算対象に現れ
る変数の並び順序は"X","Y"の順であり、文(3)の手続の
仮引数の並び順序は"X","Y"と同じため利用者定義演算
インライン展開情報テーブル図7の演算順序723に"
真"の論理値を設定する。 - 文(8)の代入文に対応する二分木構造 図5の第1の
中間テキストの情報を基に代入文の右辺に現れる組み込
み演算子"-"を利用者定義演算インライン展開情報テー
ブル図7の演算子の置換え対象731に設定する。 - 文(8)の代入文の左辺の成分名"j"を利用者定義演算
インライン展開情報テーブル図7の構造型の成分名73
2に設定する。 - 文(8)の代入文の右辺の左側、右側の演算対象に現れ
る変数の並び順序は"Y","X"の順であり、文(3)の手続の
仮引数の並び順序は"X","Y"と逆のため利用者定義演算
インライン展開情報テーブル図7の演算順序733に"
偽"の論理値を設定する。
【0015】かくして値が設定された後の利用者定義演
算インライン展開情報テーブルの構造を図7に示す。利
用者定義演算インライン展開処理部124において、利
用者定義演算を使用した文(10)が以下の条件を満たすた
め、本発明の作業領域を使用しないインライン展開が可
能であると判定する。 (D) 利用者定義演算を使用した文(10)に対応する手続"i
_op"が利用者定義演算子情報テーブル図6の対応手続名
63に設定されている値と同じである。 (E) 文(10)の代入文の右辺の式は同じ構造型の変数同士
の演算である。 (F) 文(10)の代入文の右辺は全て同一の演算子".op."で
ある。
【0016】利用者定義演算インライン展開情報テーブ
ル図7の代入文の数713に"2"が設定されているの
で、文(10)の二分木構造と同じ構造の中間テキスト図8
−(a)、図9−(a)の2つを生成する。
【0017】図8−(a)の二分木構造に対して以下の
処理を行う。図8−(b)から図8−(f)は以下の処
理を行うことによって図8−(a)の二分木構造の情報
が変わって行く様子を表している。 - 二分木構造の左辺"D"を利用者定義演算インライン展
開情報テーブル図7の構造型の成分名22に設定されて
いる"i"を部分参照としてつけた変数"D%i"と置き換える
。(図8−(b)) - 二分木構造の右辺をたどり葉の部分に相当する変数"
A"に対して利用者定義演算インライン展開情報テーブル
図7の構造型の成分名722に設定されている"i"を 部
分参照としてつけた変数"A%i"と置き換える。変数"B"に
対しても同様に置き換える。(図8−(c)) - 二分木構造の節点に相当する".op."に対して利用者定
義演算インライン展開情報テーブル図7の演算子の置換
え対象721に設定されている"+"と置き換える。利用
者定義演算インライン展開情報テーブル図7の演算順序
723に設定されている論理値は"真"のため演算対象の
入換えは行わない。(図8−(d)) - 二分木構造の葉の部分に相当する変数"C"に対して利
用者定義演算インライン展開情報テーブル図7の構造型
の成分名722に設定されている"i"を部分参照として
つけた変数"C%i"と置き換える。(図8−(e)) - 二分木構造の節点に相当する".op."に対して利用者定
義演算インライン展開情報テーブル図7の演算子の置換
え対象721に設定されている"+"と置き換える。利用
者定義演算インライン展開情報テーブル図7の演算順序
723に設定されている論理値は"真"のため演算対象の
入換えは行わない。(図8−(f))
【0018】図9−(a)の二分木構造に対して以下の
処理を行う。図9−(b)から図9−6は以下の処理を
行うことによって図9−(a)の二分木構造の情報が変
わって行く様子を表している。 - 二分木構造の左辺"D"を利用者定義演算インライン展
開情報テーブル図7の構造型の成分名732に設定され
ている"j"を部分参照としてつけた変数"D%j"と置き換え
る。(図9−(b)) - 二分木構造の右辺をたどり葉の部分に相当する変数"
A"に対して利用者定義演算インライン展開情報テーブル
図7の構造型の成分名732に設定されている"j"を部
分参照としてつけた変数"A%j"と置き換える。変数"B"に
対しても同様に置き換える。(図9−(c)) - 二分木構造の節点に相当する".op."に対して利用者定
義演算インライン展開情報テーブル図7の演算子の置換
え対象731に設定されている"-"と置き換える。利用
者定義演算インライン展開情報テーブル図7の演算順序
733に設定されている論理値は"偽"のため右と左の演
算対象を入れ換える。(図9−(d)) - 二分木構造の葉の部分に相当する変数"C"に対して利
用者定義演算インライン展開情報テーブル図7の構造型
の成分名732に設定されている"j"を部分参照として
つけた変数"C%j"と置き換える。(図9−(e)) - 二分木構造の節点に相当する".op."に対して利用者定
義演算インライン展開情報テーブル図7の演算子の置換
え対象731に設定されている"-"と置き換える。利用
者定義演算インライン展開情報テーブル図7の演算順序
733に設定されている論理値は"偽"のため右と左の演
算対象を入れ換える。(図9−(f)) 上記の処理でインライン展開用の二分木構造の生成が終
了したので文(10)に対応する二分木構造図5の中間テキ
ストをインライン展開用に生成した二分木構造図8−
(f)、図9−(f) と置き換えインライン展開を完
了する。
【0019】以上のようにして説明したように本発明に
よる利用者定義演算のインライン展開処理方法は、利用
者定義演算を関数呼出しに変換せずに、利用者定義演算
を使用した代入文の二分木構造からインライン展開用の
二分木構造を生成し、置き換えることにより作業領域を
使用しないコードを生成することができる。
【0020】
【発明の効果】以上説明したように、本発明によれば次
のような効果が期待できる。第1の効果は作業領域を使
用しないで利用者定義演算をインライン展開できること
にある。この結果、実行性能の向上と使用するメモリの
削減が図れる。その理由は、直接演算部分を置き換える
処理を行うため、作業領域を使用せず、また作業領域へ
の書き込み、書き戻し処理を省くことができるためであ
る。第2の効果は、処理時間が短縮化されることであ
る。その理由は、利用者定義演算の結果をいったん作業
領域に書き込み、その値を代入文の左辺の構造体変数へ
書き戻すという処理を避けているからである。
【図面の簡単な説明】
【図1】 本発明のコンパイラの構造のブロック図であ
る。
【図2】 利用者定義演算子情報テーブルである。
【図3】 利用者定義演算インライン展開情報テーブル
である。
【図4】 実施例の利用者定義演算を使用したソースプ
ログラムである。
【図5】 ソースプログラム図4の式(10)の二分木構造
である。
【図6】 実施例の利用者定義演算子情報テーブルであ
る。
【図7】 実施例の利用者定義演算インライン展開情報
テーブルである。
【図8】 ソースプログラム図4の文(7)の二分木構造
に関する説明図である。
【図9】 ソースプログラム図4の文(8)の二分木構造
に関する説明図である。
【符号の説明】
11 …ソースプログラム 121 …構文解析部 1211…引用仕様宣言処理部 122 …第1の中間テキスト 123 …利用者定義演算インライン展開情報生成部 124 …利用者定義演算インライン展開処理部 125 …第2の中間テキスト 126 …オブジェクト生成部 127 …利用者定義演算子情報テーブル 128 …利用者定義演算インライン展開情報テーブル 13 …オブジェクトコード 21 …対応手続数 22 …利用者定義演算子 23 …対応手続名 311 …利用者定義演算子 312 …構造型型名 313 …代入文の数 321 …演算子の置換え対象 322 …構造型の成分名 323 …演算順序 61 …対応手続数 62 …利用者定義演算子 63 …対応手続名 711 …利用者定義演算子 712 …構造型型名 713 …代入文の数 721 …演算子の置換え対象 722 …構造型の成分名 723 …演算順序

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 FORTRANプログラム言語で記述されたソ
    ースプログラムを入力し、構文解析を行い第1の中間テ
    キストを生成する構文解析部と、 引用仕様宣言を入力し、それが利用者定義演算の宣言で
    あるとき、利用者定義演算子情報テーブルを生成して、
    該テーブルに引用仕様本体の数とMODULE PROCEDURE文に
    指定されている手続名の数との和およびINTERFACE文のO
    PERATOR句に指定されている名前を設定し、引用仕様本
    体で宣言された手続名およびMODULE PROCEDURE文に指定
    された名前を配列設定するとともに、前記第1の中間テ
    キストを出力する引用仕様宣言処理部と、 この引用仕様宣言処理部から第1の中間テキストを入力
    し、利用者定義演算インライン展開情報テーブルを生成
    するとともに、該テーブルに利用者定義演算子名と、利
    用者定義演算の対象となる構造型の型名と、利用者定義
    演算に対応する手続内の代入文の数と、利用者定義演算
    子に対して置き換える組み込み演算子と、構造型の成分
    の名前と、演算子の左側の演算対象と右側の演算対象と
    を入れ換えるか否かを表す理論値とを設定する利用者定
    義演算インライン展開情報生成部と、 この利用者定義演算インライン展開情報生成部から第1
    の中間テキストを入力し、上記利用者定義演算インライ
    ン展開情報テーブルと上記利用者定義演算子情報テーブ
    ルとを参照して、作業領域を使用しないインライン展開
    が可能であるか否かを判定し、利用者定義演算を使用し
    た代入文の第1中間テキストからインライン展開用の第
    2中間テキストを生成して、置き換えることによりイン
    ライン展開を行う利用者定義演算インライン展開処理部
    と、 を備えたことを特徴とする構造型の利用者定義演算のイ
    ンライン展開装置。
  2. 【請求項2】 上記引用仕様宣言処理部は、与えられた
    引用仕様宣言が利用者定義演算の宣言であれば利用者定
    義演算子情報テーブルを生成することを特徴とする請求
    項1に記載の構造型の利用者定義演算のインライン展開
    装置。
  3. 【請求項3】 上記利用者定義演算インライン展開情報
    生成部は、第1の中間テキストを利用者定義演算インラ
    イン展開処理部に与えるに際し、該第1中間テキストが
    対応手続きに関する所定の条件を満たしている場合に利
    用者定義演算 インライン展開情報テーブルを生成する
    とを特徴とする請求項1に記載の構造型の利用者定義演
    算のインライン展開装置。
  4. 【請求項4】 上記利用者定義演算インライン展開処理
    部は、上記第1中間テキストと上記利用者定義演算イン
    ライン展開情報テーブルを入力し、利用者定義演算を使
    用した代入文が代入文に関する所定の条件にすべて適合
    するときには、上記利用者定義演算インライン展開情報
    テーブルを基に、利用者定義演算子を使用した代入文
    を、対応する組込み演算子を使用した代入文の並びに置
    換することにより、作業領域を使用しないコードを生成
    することを特徴とする請求項1に記載の利用者定義演算
    のインライン展開装置。
JP11067538A 1999-03-12 1999-03-12 構造型の利用者定義演算のインライン展開装置 Expired - Fee Related JP3124000B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11067538A JP3124000B2 (ja) 1999-03-12 1999-03-12 構造型の利用者定義演算のインライン展開装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11067538A JP3124000B2 (ja) 1999-03-12 1999-03-12 構造型の利用者定義演算のインライン展開装置

Publications (2)

Publication Number Publication Date
JP2000267858A JP2000267858A (ja) 2000-09-29
JP3124000B2 true JP3124000B2 (ja) 2001-01-15

Family

ID=13347864

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11067538A Expired - Fee Related JP3124000B2 (ja) 1999-03-12 1999-03-12 構造型の利用者定義演算のインライン展開装置

Country Status (1)

Country Link
JP (1) JP3124000B2 (ja)

Also Published As

Publication number Publication date
JP2000267858A (ja) 2000-09-29

Similar Documents

Publication Publication Date Title
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
US20060195828A1 (en) Instruction generator, method for generating instructions and computer program product that executes an application for an instruction generator
JPS63181033A (ja) プログラム自動生成方式
Back et al. Testing and verifying invariant based programs in the SOCOS environment
Emmelmann Code selection by regularly controlled term rewriting
Bessai et al. User support for the combinator logic synthesizer framework
JP3124000B2 (ja) 構造型の利用者定義演算のインライン展開装置
Shimba et al. Bidirectional translation between OCL and JML for round-trip engineering
Bures et al. The role of ontologies in schema-based program synthesis
Davis et al. Bash2py: A bash to Python translator
JPH0540780A (ja) ベクトル化処理方式
Oakes Optimizing Simulink Models
Mittal et al. Towards an Approach for Translation Validation of Thread-level Parallelizing Transformations using Colored Petri Nets.
Grosche et al. Exploiting modular language extensions in legacy c code: An automotive case study
JPH01177165A (ja) 配列の定義/引用関係検査方式
Jahanzeb et al. A MATLAB to Modelica Translator
Dan et al. An approach to formalize uml sequence diagrams in csp
JP3218998B2 (ja) プログラム自動合成装置
JP3014409B2 (ja) 自然言語自動翻訳装置
Garner et al. Adding CSPm Functions and Data Types to CSP++
JPH0795275B2 (ja) コンパイル処理装置
JPS58169637A (ja) コンパイル処理方式
Purtilo et al. A flexible program adaptation system: Case studies in Ada
JPH06195412A (ja) シミュレーションモデルのためのコンパイルメカニズム
Razouk A guided tour of P-Nut (Release 2.2)

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20001010

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

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

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081027

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees