JPH09198246A - 関数呼出し状況の解析方法 - Google Patents
関数呼出し状況の解析方法Info
- Publication number
- JPH09198246A JPH09198246A JP8007961A JP796196A JPH09198246A JP H09198246 A JPH09198246 A JP H09198246A JP 8007961 A JP8007961 A JP 8007961A JP 796196 A JP796196 A JP 796196A JP H09198246 A JPH09198246 A JP H09198246A
- Authority
- JP
- Japan
- Prior art keywords
- function
- file
- name
- syntax data
- program
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 10
- 230000006870 function Effects 0.000 claims abstract description 107
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- YASYVMFAVPKPKE-UHFFFAOYSA-N acephate Chemical compound COP(=O)(SC)NC(C)=O YASYVMFAVPKPKE-UHFFFAOYSA-N 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】 プログラムに記述される関数呼出し状況をエ
ディタ等で探索すると、探索した関数に対するリストア
ップ及び修正に多くの手間を必要とする。 【解決手段】 入力部3によりファイル名と関数名及び
対象言語を指定することにより、ファイル取得部2はプ
ログラムのテキストファイルをソースファイル1から取
得し、構文データ読み込み部5は指定されるプログラム
言語の構文データをファイル4から読み込み、関数部分
取得部6は取得したソースファイルから構文データで定
義される関数部分を取得し、この関数部分に対して関数
名検索部7は指定される関数名を検索し、出力部8は検
索した関数名を持つファイル名と関数リストを出力す
る。関数名検索は、構文データのパターンとソースファ
イルから抜き出した関数部分とのパターンマッチングに
より行う。
ディタ等で探索すると、探索した関数に対するリストア
ップ及び修正に多くの手間を必要とする。 【解決手段】 入力部3によりファイル名と関数名及び
対象言語を指定することにより、ファイル取得部2はプ
ログラムのテキストファイルをソースファイル1から取
得し、構文データ読み込み部5は指定されるプログラム
言語の構文データをファイル4から読み込み、関数部分
取得部6は取得したソースファイルから構文データで定
義される関数部分を取得し、この関数部分に対して関数
名検索部7は指定される関数名を検索し、出力部8は検
索した関数名を持つファイル名と関数リストを出力す
る。関数名検索は、構文データのパターンとソースファ
イルから抜き出した関数部分とのパターンマッチングに
より行う。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータのソ
フトウェアを構成するプログラムの開発方法に係り、特
にプログラム関数の呼出し状況を解析する方法に関す
る。
フトウェアを構成するプログラムの開発方法に係り、特
にプログラム関数の呼出し状況を解析する方法に関す
る。
【0002】
【従来の技術】プログラムは、多数の関数で記述され、
関数間での呼出しにより多数の機能が実現される。プロ
グラマは、プログラムの開発や保守段階で関数の呼出し
状況を知る必要に迫られる場合がある。これは、ある関
数を修正したときに他の関数への影響を考慮するためで
ある。
関数間での呼出しにより多数の機能が実現される。プロ
グラマは、プログラムの開発や保守段階で関数の呼出し
状況を知る必要に迫られる場合がある。これは、ある関
数を修正したときに他の関数への影響を考慮するためで
ある。
【0003】現状では、関数の呼出し状況は、UNIX
やVMSなどのOS(オペレーティングシステム)が提
供する探索コマンドとエディタを使用し、以下の手順で
調べている。
やVMSなどのOS(オペレーティングシステム)が提
供する探索コマンドとエディタを使用し、以下の手順で
調べている。
【0004】(1)探索コマンド(grep、sear
chなど)を使用してキーとなる関数名を持つファイル
を取得する。例えば、VMSの場合は、以下のコマンド
入力により2つの関数名の出力を得る。
chなど)を使用してキーとなる関数名を持つファイル
を取得する。例えば、VMSの場合は、以下のコマンド
入力により2つの関数名の出力を得る。
【0005】 入力:$ search *.isp func(拡張子ispを持つ関数 名を持つファイルを検索)。
【0006】 出力:*** file1.isp ***(拡張子ispを持つ関数名) func 12(funcという文字が使用されている行数) 出力:*** file10.isp *** func 23 (2)エディタにファイルを読み込み、このファイルに
記述されるキーの関数名を探すことで呼出している関数
を明らかにする。この操作は(1)で取得したファイル
毎に行う。
記述されるキーの関数名を探すことで呼出している関数
を明らかにする。この操作は(1)で取得したファイル
毎に行う。
【0007】
【発明が解決しようとする課題】従来の関数名呼出し方
法では、探索コマンドの入力をプログラマが行うことで
関数名が記述されるファイルと関数名が使用されている
行数の出力を得るものであり、探索した関数に対するリ
ストアップ及び修正には多くの手間を必要とする。
法では、探索コマンドの入力をプログラマが行うことで
関数名が記述されるファイルと関数名が使用されている
行数の出力を得るものであり、探索した関数に対するリ
ストアップ及び修正には多くの手間を必要とする。
【0008】例えば、プログラム言語LISPの関数f
uncの引数を2つから3つに増やす修正の場合、修正
前の関数”(func a b)”を関数”(func
ab c)”に書替えねばならない。
uncの引数を2つから3つに増やす修正の場合、修正
前の関数”(func a b)”を関数”(func
ab c)”に書替えねばならない。
【0009】このとき、ソースファイルから”fun
c”を使用しているファイルを抜き出し、これらファイ
ルが「file1.isp」と「file10.is
p」と「file11.isp」とすると、エディタに
「file1.isp」を読み込み、検索コマンドを使
用して”func”という文字を探し、発見されたとき
にその”func”を使用している関数名を特定する。
c”を使用しているファイルを抜き出し、これらファイ
ルが「file1.isp」と「file10.is
p」と「file11.isp」とすると、エディタに
「file1.isp」を読み込み、検索コマンドを使
用して”func”という文字を探し、発見されたとき
にその”func”を使用している関数名を特定する。
【0010】LISPの場合は、関数定義は以下のよう
に、”(defun”で始まり、この後に来る単語が関
数名である。
に、”(defun”で始まり、この後に来る単語が関
数名である。
【0011】 上記の関数に対してサーチコマンドで”func”を探
し、同様に関数名の特定を行う。ファイルのすべてにつ
いて関数名のサーチを終えた後に残りのファイルを読み
込んで同じ操作を繰り返す。
し、同様に関数名の特定を行う。ファイルのすべてにつ
いて関数名のサーチを終えた後に残りのファイルを読み
込んで同じ操作を繰り返す。
【0012】以上のように、従来の関数呼出しには多く
の手間を必要とし、さらに修正には多くの操作を必要と
し、プログラマの作業負担を大きくしている。
の手間を必要とし、さらに修正には多くの操作を必要と
し、プログラマの作業負担を大きくしている。
【0013】本発明の目的は、関数の呼び出し、ひいて
は関数の修正の手間を大幅に軽減したプログラムの開発
方法を提供することにある。
は関数の修正の手間を大幅に軽減したプログラムの開発
方法を提供することにある。
【0014】
【課題を解決するための手段】本発明は、多数の関数で
記述され関数間での呼出しにより各種機能を実現するプ
ログラムを解析対象とし、指定する関数の呼出し状況を
解析するにおいて、指定されるプログラムのテキストフ
ァイルをソースファイルから取得し、前記プログラムを
記述するプログラム言語の指定により構文データファイ
ルから当該言語の構文データを読み込み、前記取得した
ソースファイルから、前記構文データで定義される関数
部分を取得し、指定される検索対象の関数名を前記関数
部分に対して検索し、前記検索した関数名を持つファイ
ル名と関数リストを出力することを特徴とする。
記述され関数間での呼出しにより各種機能を実現するプ
ログラムを解析対象とし、指定する関数の呼出し状況を
解析するにおいて、指定されるプログラムのテキストフ
ァイルをソースファイルから取得し、前記プログラムを
記述するプログラム言語の指定により構文データファイ
ルから当該言語の構文データを読み込み、前記取得した
ソースファイルから、前記構文データで定義される関数
部分を取得し、指定される検索対象の関数名を前記関数
部分に対して検索し、前記検索した関数名を持つファイ
ル名と関数リストを出力することを特徴とする。
【0015】また、前記検索は、前記構文データのパタ
ーンと前記ソースファイルから抜き出した関数部分との
パターンマッチングにより行うことを特徴とする。
ーンと前記ソースファイルから抜き出した関数部分との
パターンマッチングにより行うことを特徴とする。
【0016】
【発明の実施の形態】図1は、本発明の実施形態を示す
関数呼び出しのためのプログラム構成である。ソースフ
ァイル1には、テキストファイル構成の多数のプログラ
ムが格納される。ファイル取得部2は、入力部3からの
コマンドにより、保守などの編集対象となるプログラム
をソースファイル1から取得する。
関数呼び出しのためのプログラム構成である。ソースフ
ァイル1には、テキストファイル構成の多数のプログラ
ムが格納される。ファイル取得部2は、入力部3からの
コマンドにより、保守などの編集対象となるプログラム
をソースファイル1から取得する。
【0017】構文データファイル4は、各種プログラム
言語の構文データをテキストファイルとして保存する。
構文データ読み込み部5は、入力部3で指定するモード
(対象言語)に応じたプログラム言語の構文データをフ
ァイル4から読み込む。
言語の構文データをテキストファイルとして保存する。
構文データ読み込み部5は、入力部3で指定するモード
(対象言語)に応じたプログラム言語の構文データをフ
ァイル4から読み込む。
【0018】関数部分取得部6は、ファイル取得部2が
取得したソースファイルから、構文データ読み込み部5
が取得したモードの構文データで定義される関数部分を
取得する。
取得したソースファイルから、構文データ読み込み部5
が取得したモードの構文データで定義される関数部分を
取得する。
【0019】関数名検索部7は、入力部3でキー(関数
名)が指定されたときに、関数部分取得部6が取得した
各種関数に対して該当する関数名を検索する。
名)が指定されたときに、関数部分取得部6が取得した
各種関数に対して該当する関数名を検索する。
【0020】出力部8は、関数名検索部7が検索した関
数名を持つファイル名と関数リストを出力する。
数名を持つファイル名と関数リストを出力する。
【0021】以上のプログラム構成による関数呼出し
は、例えば、入力部3による下記の入力により出力部8
には下記のファイル名と関数名”func”を使用して
いる関数リストを得る。
は、例えば、入力部3による下記の入力により出力部8
には下記のファイル名と関数名”func”を使用して
いる関数リストを得る。
【0022】 このような関数呼出しは、図2に示す処理手順でなされ
る。入力解析(S1)は、入力部3において対象とする
ファイル名と関数名及び対象言語を変数にセットする。
る。入力解析(S1)は、入力部3において対象とする
ファイル名と関数名及び対象言語を変数にセットする。
【0023】構文データの解析(S2)は、対象となる
関数部分を抜き出すために、変数で指定される対象言語
に対して、構文データ読み込み部5により構文データを
読み込む。
関数部分を抜き出すために、変数で指定される対象言語
に対して、構文データ読み込み部5により構文データを
読み込む。
【0024】ファイルの取得(S3)は、変数で指定さ
れるファイル名のソースファイルをファイル取得部2が
取得する。ファイル名がワイルドカードで指定される場
合にはそれぞれのファイル名を特定して取得する。
れるファイル名のソースファイルをファイル取得部2が
取得する。ファイル名がワイルドカードで指定される場
合にはそれぞれのファイル名を特定して取得する。
【0025】残りファイルの有無判定(S4)は、取得
した各ファイルについての関数呼出しが終了したか否か
を判定する。
した各ファイルについての関数呼出しが終了したか否か
を判定する。
【0026】関数部分の抜き出し(S5)は、取得した
各ファイルから関数部分取得部6が関数部分を抜き出
す。
各ファイルから関数部分取得部6が関数部分を抜き出
す。
【0027】関数名検索及び出力(S6)は、変数指定
される関数名について、関数名検索部7により抜き出さ
れた関数部分について当該関数名が存在するか否かを検
索し、その検索結果を出力部8がファイル名と関数名と
して出力する。
される関数名について、関数名検索部7により抜き出さ
れた関数部分について当該関数名が存在するか否かを検
索し、その検索結果を出力部8がファイル名と関数名と
して出力する。
【0028】下記表には、構文データ例を示し、構文デ
ータに必要な要素とその充当例を示す。
ータに必要な要素とその充当例を示す。
【0029】
【表1】
【0030】この表は、3つの言語(LISP,C,F
ORTRAN)の構文データを示し、要素名と要素の値
を示す。要素名「LANGUAGE」は、ソースファイ
ルのプログラム言語の種類を示す。「PATTERN」
は関数の定義様式を示し、”*”、”NAME”、”T
EXT”は予約語である。
ORTRAN)の構文データを示し、要素名と要素の値
を示す。要素名「LANGUAGE」は、ソースファイ
ルのプログラム言語の種類を示す。「PATTERN」
は関数の定義様式を示し、”*”、”NAME”、”T
EXT”は予約語である。
【0031】”*”は、ワイルドカードであり、その部
分にどのような文字、単語が1つあるいは複数マッチす
ることを意味する。
分にどのような文字、単語が1つあるいは複数マッチす
ることを意味する。
【0032】”NAME”は、その部分にマッチした単
語が関数名であることを意味する。
語が関数名であることを意味する。
【0033】”TEXT”は、ワイルドカード的な使用
がされるが、そのマッチした文が意味があり、その部分
に関数の実体が入る。
がされるが、そのマッチした文が意味があり、その部分
に関数の実体が入る。
【0034】要素名「PATTERN」は、区切りの始
まりと終わりの括弧を示す。要素名「COMMENT」
は、それらに挟まれた部分を無視することを意味し、1
つしか指定していない場合はその文字から行末までが無
視される。
まりと終わりの括弧を示す。要素名「COMMENT」
は、それらに挟まれた部分を無視することを意味し、1
つしか指定していない場合はその文字から行末までが無
視される。
【0035】これらの構文データから、図2に関数部分
の抜き出し(S5)は、「PATTERN」に基づいて
行われる。また、関数名検索(S6)は、先に関数部分
の抜き出しがなされたときに”TEXT”にマッチした
部分を検索対象として関数名の検索を行う。マッチング
の取り方を図3を参照して以下に詳細に説明する。
の抜き出し(S5)は、「PATTERN」に基づいて
行われる。また、関数名検索(S6)は、先に関数部分
の抜き出しがなされたときに”TEXT”にマッチした
部分を検索対象として関数名の検索を行う。マッチング
の取り方を図3を参照して以下に詳細に説明する。
【0036】パターン{A,B,C,D,E}とソース
のマッチングは、まず、パターン先頭の{A}とソー
スの先頭の{a}とのマッチングを取る。このとき、マ
ッチングしたならば、次のパターン要素とソース要素
とのマッチングを取る。もし、ここでマッチングに失敗
したならば、ソースの{b}と先頭のパターン要素
{A}とのマッチングを試みる。
のマッチングは、まず、パターン先頭の{A}とソー
スの先頭の{a}とのマッチングを取る。このとき、マ
ッチングしたならば、次のパターン要素とソース要素
とのマッチングを取る。もし、ここでマッチングに失敗
したならば、ソースの{b}と先頭のパターン要素
{A}とのマッチングを試みる。
【0037】このようなマッチング処理を行い、パター
ンの最後までマッチングに成功したときにはそれが1つ
の関数定義となる。その後は、再び、パターンの先頭と
ソースの残りの要素のマッチングから始める。
ンの最後までマッチングに成功したときにはそれが1つ
の関数定義となる。その後は、再び、パターンの先頭と
ソースの残りの要素のマッチングから始める。
【0038】ここで、マッチングしたとは、パターン”
*”の場合ではそれとのマッチングを取る段階でパター
ンの”*”の次の要素を得てその要素を残りのソースか
ら探すことになる。
*”の場合ではそれとのマッチングを取る段階でパター
ンの”*”の次の要素を得てその要素を残りのソースか
ら探すことになる。
【0039】また、括弧の始まりとのマッチングでソー
スの要素とのマッチングが取れたならば、残りのソース
からその括弧の終わりを探し、そのソースの括弧間の文
字列とパターンの括弧間のパターン要素とのマッチング
を行う。
スの要素とのマッチングが取れたならば、残りのソース
からその括弧の終わりを探し、そのソースの括弧間の文
字列とパターンの括弧間のパターン要素とのマッチング
を行う。
【0040】このように、”*”と括弧のマッチングを
行うことで関数部分の取りだしを行う。
行うことで関数部分の取りだしを行う。
【0041】
【発明の効果】以上のとおり、本発明によれば、関数の
呼出し状況を解析するにおいて、指定するプログラム言
語の構文データを使ってテキストファイルから関数部分
を取得し、この関数部分に対して指定する関数名を検索
出力するようにしたため、プログラマによる個別の検索
作業を不要にすると共に正確な検索ができる。
呼出し状況を解析するにおいて、指定するプログラム言
語の構文データを使ってテキストファイルから関数部分
を取得し、この関数部分に対して指定する関数名を検索
出力するようにしたため、プログラマによる個別の検索
作業を不要にすると共に正確な検索ができる。
【0042】また、構文データをテキストファイルで定
義することにより、多種類のプログラム言語に対応で
き、しかも構文を追加することで済む。
義することにより、多種類のプログラム言語に対応で
き、しかも構文を追加することで済む。
【0043】また、検索は、構文データのパターンとソ
ースファイルから抜き出した関数部分とのパターンマッ
チングにより行うことができる。
ースファイルから抜き出した関数部分とのパターンマッ
チングにより行うことができる。
【図1】本発明の実施形態を示すプログラム構成。
【図2】実施形態における関数呼出し手順。
【図3】実施形態におけるパターンとソースファイルの
マッチング例。
マッチング例。
【符号の説明】 1…ソースファイル 2…ファイル取得部 3…入力部 4…構文データファイル 5…構文データ読み込み部 6…関数部分取得部 7…関数名検索部 8…出力部
Claims (2)
- 【請求項1】 多数の関数で記述され関数間での呼出し
により各種機能を実現するプログラムを解析対象とし、
指定する関数の呼出し状況を解析するにおいて、 指定されるプログラムのテキストファイルをソースファ
イルから取得し、 前記プログラムを記述するプログラム言語の指定により
構文データファイルから当該言語の構文データを読み込
み、 前記取得したソースファイルから、前記構文データで定
義される関数部分を取得し、 指定される検索対象の関数名を前記関数部分に対して検
索し、 前記検索した関数名を持つファイル名と関数リストを出
力することを特徴とする関数呼出し状況の解析方法。 - 【請求項2】 前記検索は、前記構文データのパターン
と前記ソースファイルから抜き出した関数部分とのパタ
ーンマッチングにより行うことを特徴とする請求項1記
載の関数呼出し状況の解析方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8007961A JPH09198246A (ja) | 1996-01-22 | 1996-01-22 | 関数呼出し状況の解析方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP8007961A JPH09198246A (ja) | 1996-01-22 | 1996-01-22 | 関数呼出し状況の解析方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH09198246A true JPH09198246A (ja) | 1997-07-31 |
Family
ID=11680085
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8007961A Pending JPH09198246A (ja) | 1996-01-22 | 1996-01-22 | 関数呼出し状況の解析方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH09198246A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6334210B1 (en) | 1998-01-26 | 2001-12-25 | Nec Corporation | Language processing system and language processing method enabling reduction of memory region and overhead in profile information collection of computer |
-
1996
- 1996-01-22 JP JP8007961A patent/JPH09198246A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6334210B1 (en) | 1998-01-26 | 2001-12-25 | Nec Corporation | Language processing system and language processing method enabling reduction of memory region and overhead in profile information collection of computer |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5946488A (en) | Method for selectively and incrementally displaying the results of preprocessing | |
| US5287444A (en) | Message processing system | |
| US6961931B2 (en) | Dependency specification using target patterns | |
| US20050005239A1 (en) | System and method for automatic insertion of cross references in a document | |
| JP3502543B2 (ja) | テストケース生成システム及びテストケース生成方法 | |
| JP2000029674A (ja) | アプリケ―ションソフトウェア構成方法 | |
| JPH0567144A (ja) | 前編集支援方法およびその装置 | |
| US20030097378A1 (en) | Method and system for removing text-based viruses | |
| JPH09198246A (ja) | 関数呼出し状況の解析方法 | |
| US5805888A (en) | Identifier dictionary-generating device | |
| Mittelbach et al. | The docstrip program | |
| US7523031B1 (en) | Information processing apparatus and method capable of processing plurality type of input information | |
| JPH08194611A (ja) | プログラム修正による影響範囲を解析する装置 | |
| JP3584204B2 (ja) | 原始プログラム自動変換装置 | |
| JP2003177923A (ja) | ポーティング支援システムにおける予約語変換方法 | |
| JPH05197560A (ja) | プログラミング言語変換装置 | |
| JPH10269066A (ja) | 日本語によるシェル自動作成装置 | |
| JP3414319B2 (ja) | データ検索装置、方法及び記録媒体 | |
| JPH05100829A (ja) | コンパイルユニツト管理方式 | |
| JP2004258848A (ja) | プログラム作成支援方法およびシステム並びにプログラム | |
| JP3139393B2 (ja) | デバッグ装置 | |
| JPH0588866A (ja) | ソースコード自動生成装置 | |
| JP2001005655A (ja) | アプリケーションジェネレータ開発支援装置及びアプリケーションジェネレータ開発支援方法 | |
| JP2908184B2 (ja) | テキストファイル編集方法及び装置 | |
| Choquette et al. | CMS RATFOR User's Manual. |