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
Application number
JP8007961A
Other languages
English (en)
Inventor
Kimio Aoki
公男 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Meidensha Corp
Meidensha Electric Manufacturing Co Ltd
Original Assignee
Meidensha Corp
Meidensha Electric Manufacturing Co Ltd
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 Meidensha Corp, Meidensha Electric Manufacturing Co Ltd filed Critical Meidensha Corp
Priority to JP8007961A priority Critical patent/JPH09198246A/ja
Publication of JPH09198246A publication Critical patent/JPH09198246A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 プログラムに記述される関数呼出し状況をエ
ディタ等で探索すると、探索した関数に対するリストア
ップ及び修正に多くの手間を必要とする。 【解決手段】 入力部3によりファイル名と関数名及び
対象言語を指定することにより、ファイル取得部2はプ
ログラムのテキストファイルをソースファイル1から取
得し、構文データ読み込み部5は指定されるプログラム
言語の構文データをファイル4から読み込み、関数部分
取得部6は取得したソースファイルから構文データで定
義される関数部分を取得し、この関数部分に対して関数
名検索部7は指定される関数名を検索し、出力部8は検
索した関数名を持つファイル名と関数リストを出力す
る。関数名検索は、構文データのパターンとソースファ
イルから抜き出した関数部分とのパターンマッチングに
より行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータのソ
フトウェアを構成するプログラムの開発方法に係り、特
にプログラム関数の呼出し状況を解析する方法に関す
る。
【0002】
【従来の技術】プログラムは、多数の関数で記述され、
関数間での呼出しにより多数の機能が実現される。プロ
グラマは、プログラムの開発や保守段階で関数の呼出し
状況を知る必要に迫られる場合がある。これは、ある関
数を修正したときに他の関数への影響を考慮するためで
ある。
【0003】現状では、関数の呼出し状況は、UNIX
やVMSなどのOS(オペレーティングシステム)が提
供する探索コマンドとエディタを使用し、以下の手順で
調べている。
【0004】(1)探索コマンド(grep、sear
chなど)を使用してキーとなる関数名を持つファイル
を取得する。例えば、VMSの場合は、以下のコマンド
入力により2つの関数名の出力を得る。
【0005】 入力:$ search *.isp func(拡張子ispを持つ関数 名を持つファイルを検索)。
【0006】 出力:*** file1.isp ***(拡張子ispを持つ関数名) func 12(funcという文字が使用されている行数) 出力:*** file10.isp *** func 23 (2)エディタにファイルを読み込み、このファイルに
記述されるキーの関数名を探すことで呼出している関数
を明らかにする。この操作は(1)で取得したファイル
毎に行う。
【0007】
【発明が解決しようとする課題】従来の関数名呼出し方
法では、探索コマンドの入力をプログラマが行うことで
関数名が記述されるファイルと関数名が使用されている
行数の出力を得るものであり、探索した関数に対するリ
ストアップ及び修正には多くの手間を必要とする。
【0008】例えば、プログラム言語LISPの関数f
uncの引数を2つから3つに増やす修正の場合、修正
前の関数”(func a b)”を関数”(func
ab c)”に書替えねばならない。
【0009】このとき、ソースファイルから”fun
c”を使用しているファイルを抜き出し、これらファイ
ルが「file1.isp」と「file10.is
p」と「file11.isp」とすると、エディタに
「file1.isp」を読み込み、検索コマンドを使
用して”func”という文字を探し、発見されたとき
にその”func”を使用している関数名を特定する。
【0010】LISPの場合は、関数定義は以下のよう
に、”(defun”で始まり、この後に来る単語が関
数名である。
【0011】 上記の関数に対してサーチコマンドで”func”を探
し、同様に関数名の特定を行う。ファイルのすべてにつ
いて関数名のサーチを終えた後に残りのファイルを読み
込んで同じ操作を繰り返す。
【0012】以上のように、従来の関数呼出しには多く
の手間を必要とし、さらに修正には多くの操作を必要と
し、プログラマの作業負担を大きくしている。
【0013】本発明の目的は、関数の呼び出し、ひいて
は関数の修正の手間を大幅に軽減したプログラムの開発
方法を提供することにある。
【0014】
【課題を解決するための手段】本発明は、多数の関数で
記述され関数間での呼出しにより各種機能を実現するプ
ログラムを解析対象とし、指定する関数の呼出し状況を
解析するにおいて、指定されるプログラムのテキストフ
ァイルをソースファイルから取得し、前記プログラムを
記述するプログラム言語の指定により構文データファイ
ルから当該言語の構文データを読み込み、前記取得した
ソースファイルから、前記構文データで定義される関数
部分を取得し、指定される検索対象の関数名を前記関数
部分に対して検索し、前記検索した関数名を持つファイ
ル名と関数リストを出力することを特徴とする。
【0015】また、前記検索は、前記構文データのパタ
ーンと前記ソースファイルから抜き出した関数部分との
パターンマッチングにより行うことを特徴とする。
【0016】
【発明の実施の形態】図1は、本発明の実施形態を示す
関数呼び出しのためのプログラム構成である。ソースフ
ァイル1には、テキストファイル構成の多数のプログラ
ムが格納される。ファイル取得部2は、入力部3からの
コマンドにより、保守などの編集対象となるプログラム
をソースファイル1から取得する。
【0017】構文データファイル4は、各種プログラム
言語の構文データをテキストファイルとして保存する。
構文データ読み込み部5は、入力部3で指定するモード
(対象言語)に応じたプログラム言語の構文データをフ
ァイル4から読み込む。
【0018】関数部分取得部6は、ファイル取得部2が
取得したソースファイルから、構文データ読み込み部5
が取得したモードの構文データで定義される関数部分を
取得する。
【0019】関数名検索部7は、入力部3でキー(関数
名)が指定されたときに、関数部分取得部6が取得した
各種関数に対して該当する関数名を検索する。
【0020】出力部8は、関数名検索部7が検索した関
数名を持つファイル名と関数リストを出力する。
【0021】以上のプログラム構成による関数呼出し
は、例えば、入力部3による下記の入力により出力部8
には下記のファイル名と関数名”func”を使用して
いる関数リストを得る。
【0022】 このような関数呼出しは、図2に示す処理手順でなされ
る。入力解析(S1)は、入力部3において対象とする
ファイル名と関数名及び対象言語を変数にセットする。
【0023】構文データの解析(S2)は、対象となる
関数部分を抜き出すために、変数で指定される対象言語
に対して、構文データ読み込み部5により構文データを
読み込む。
【0024】ファイルの取得(S3)は、変数で指定さ
れるファイル名のソースファイルをファイル取得部2が
取得する。ファイル名がワイルドカードで指定される場
合にはそれぞれのファイル名を特定して取得する。
【0025】残りファイルの有無判定(S4)は、取得
した各ファイルについての関数呼出しが終了したか否か
を判定する。
【0026】関数部分の抜き出し(S5)は、取得した
各ファイルから関数部分取得部6が関数部分を抜き出
す。
【0027】関数名検索及び出力(S6)は、変数指定
される関数名について、関数名検索部7により抜き出さ
れた関数部分について当該関数名が存在するか否かを検
索し、その検索結果を出力部8がファイル名と関数名と
して出力する。
【0028】下記表には、構文データ例を示し、構文デ
ータに必要な要素とその充当例を示す。
【0029】
【表1】
【0030】この表は、3つの言語(LISP,C,F
ORTRAN)の構文データを示し、要素名と要素の値
を示す。要素名「LANGUAGE」は、ソースファイ
ルのプログラム言語の種類を示す。「PATTERN」
は関数の定義様式を示し、”*”、”NAME”、”T
EXT”は予約語である。
【0031】”*”は、ワイルドカードであり、その部
分にどのような文字、単語が1つあるいは複数マッチす
ることを意味する。
【0032】”NAME”は、その部分にマッチした単
語が関数名であることを意味する。
【0033】”TEXT”は、ワイルドカード的な使用
がされるが、そのマッチした文が意味があり、その部分
に関数の実体が入る。
【0034】要素名「PATTERN」は、区切りの始
まりと終わりの括弧を示す。要素名「COMMENT」
は、それらに挟まれた部分を無視することを意味し、1
つしか指定していない場合はその文字から行末までが無
視される。
【0035】これらの構文データから、図2に関数部分
の抜き出し(S5)は、「PATTERN」に基づいて
行われる。また、関数名検索(S6)は、先に関数部分
の抜き出しがなされたときに”TEXT”にマッチした
部分を検索対象として関数名の検索を行う。マッチング
の取り方を図3を参照して以下に詳細に説明する。
【0036】パターン{A,B,C,D,E}とソース
のマッチングは、まず、パターン先頭の{A}とソー
スの先頭の{a}とのマッチングを取る。このとき、マ
ッチングしたならば、次のパターン要素とソース要素
とのマッチングを取る。もし、ここでマッチングに失敗
したならば、ソースの{b}と先頭のパターン要素
{A}とのマッチングを試みる。
【0037】このようなマッチング処理を行い、パター
ンの最後までマッチングに成功したときにはそれが1つ
の関数定義となる。その後は、再び、パターンの先頭と
ソースの残りの要素のマッチングから始める。
【0038】ここで、マッチングしたとは、パターン”
*”の場合ではそれとのマッチングを取る段階でパター
ンの”*”の次の要素を得てその要素を残りのソースか
ら探すことになる。
【0039】また、括弧の始まりとのマッチングでソー
スの要素とのマッチングが取れたならば、残りのソース
からその括弧の終わりを探し、そのソースの括弧間の文
字列とパターンの括弧間のパターン要素とのマッチング
を行う。
【0040】このように、”*”と括弧のマッチングを
行うことで関数部分の取りだしを行う。
【0041】
【発明の効果】以上のとおり、本発明によれば、関数の
呼出し状況を解析するにおいて、指定するプログラム言
語の構文データを使ってテキストファイルから関数部分
を取得し、この関数部分に対して指定する関数名を検索
出力するようにしたため、プログラマによる個別の検索
作業を不要にすると共に正確な検索ができる。
【0042】また、構文データをテキストファイルで定
義することにより、多種類のプログラム言語に対応で
き、しかも構文を追加することで済む。
【0043】また、検索は、構文データのパターンとソ
ースファイルから抜き出した関数部分とのパターンマッ
チングにより行うことができる。
【図面の簡単な説明】
【図1】本発明の実施形態を示すプログラム構成。
【図2】実施形態における関数呼出し手順。
【図3】実施形態におけるパターンとソースファイルの
マッチング例。
【符号の説明】 1…ソースファイル 2…ファイル取得部 3…入力部 4…構文データファイル 5…構文データ読み込み部 6…関数部分取得部 7…関数名検索部 8…出力部

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 多数の関数で記述され関数間での呼出し
    により各種機能を実現するプログラムを解析対象とし、
    指定する関数の呼出し状況を解析するにおいて、 指定されるプログラムのテキストファイルをソースファ
    イルから取得し、 前記プログラムを記述するプログラム言語の指定により
    構文データファイルから当該言語の構文データを読み込
    み、 前記取得したソースファイルから、前記構文データで定
    義される関数部分を取得し、 指定される検索対象の関数名を前記関数部分に対して検
    索し、 前記検索した関数名を持つファイル名と関数リストを出
    力することを特徴とする関数呼出し状況の解析方法。
  2. 【請求項2】 前記検索は、前記構文データのパターン
    と前記ソースファイルから抜き出した関数部分とのパタ
    ーンマッチングにより行うことを特徴とする請求項1記
    載の関数呼出し状況の解析方法。
JP8007961A 1996-01-22 1996-01-22 関数呼出し状況の解析方法 Pending JPH09198246A (ja)

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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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.