JPH05204700A - 言語処理装置 - Google Patents
言語処理装置Info
- Publication number
- JPH05204700A JPH05204700A JP4014323A JP1432392A JPH05204700A JP H05204700 A JPH05204700 A JP H05204700A JP 4014323 A JP4014323 A JP 4014323A JP 1432392 A JP1432392 A JP 1432392A JP H05204700 A JPH05204700 A JP H05204700A
- Authority
- JP
- Japan
- Prior art keywords
- function
- file
- undefined
- dummy
- 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
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 ソースプログラムに対してのデバッグが効率
的に行えるコードを作成することを目的とする。 【構成】 ソースプログラム内で定義されていない関数
を検索する手段107と、未定義部分の補足を含めたコ
ード生成を行う手段108とを備えたことを特徴とす
る。
的に行えるコードを作成することを目的とする。 【構成】 ソースプログラム内で定義されていない関数
を検索する手段107と、未定義部分の補足を含めたコ
ード生成を行う手段108とを備えたことを特徴とす
る。
Description
【0001】
【産業上の利用分野】本発明は、言語処理装置のプログ
ラムデバッグ手段に関する。
ラムデバッグ手段に関する。
【0002】
【従来の技術】従来のコンパイラは、プログラミング言
語で書かれたソースプログラムを入力して機械が理解で
きる言語すなわち実行可能な形式に変換する機能を有
し、構文解析プログラムとコード生成を行うプログラム
とに大別できる。構文解析プログラムは入力されたソー
スプログラムの構文を解析し、コード生成プログラムは
構文解析の結果をもとにオブジェクトコードファイルを
生成する。こうして得られたオブジェクトは、最終的に
実行環境であるターゲットマシン上でプログラムを実行
するために用いられるが、プログラム中のある時点で正
しいデータがやりとりされているか期待通りの動作をし
て期待値を正しく返すか等を確かめるための試験的な実
行を行うために、ターゲットCPUを搭載したハードウ
ェアエミュレータやソフトウェアシミュレータ等のデバ
ッグ手段上で使用されることも多い。このようなデバッ
ク段階のプログラムは開発途中のものであり、今後、変
数の値や関数の内部構成が追加され変更されることがあ
り、少なくともデバッグ時点で変数の定義とその値や関
数の定義とその内部処理などは記述されたものでなけれ
ばならない。例えば、図7の入力ファイル例702のよ
うにmain.cというプログラム中でfunc1
(a,b)という関数が使われていても、main.c
中でfunc1(a,b)がどのような関数であるかの
定義を記述した箇所がなければこの関数はプログラムデ
バッグ手段で情報不足と見なされ、main.cのデバ
ッグは不可能である。
語で書かれたソースプログラムを入力して機械が理解で
きる言語すなわち実行可能な形式に変換する機能を有
し、構文解析プログラムとコード生成を行うプログラム
とに大別できる。構文解析プログラムは入力されたソー
スプログラムの構文を解析し、コード生成プログラムは
構文解析の結果をもとにオブジェクトコードファイルを
生成する。こうして得られたオブジェクトは、最終的に
実行環境であるターゲットマシン上でプログラムを実行
するために用いられるが、プログラム中のある時点で正
しいデータがやりとりされているか期待通りの動作をし
て期待値を正しく返すか等を確かめるための試験的な実
行を行うために、ターゲットCPUを搭載したハードウ
ェアエミュレータやソフトウェアシミュレータ等のデバ
ッグ手段上で使用されることも多い。このようなデバッ
ク段階のプログラムは開発途中のものであり、今後、変
数の値や関数の内部構成が追加され変更されることがあ
り、少なくともデバッグ時点で変数の定義とその値や関
数の定義とその内部処理などは記述されたものでなけれ
ばならない。例えば、図7の入力ファイル例702のよ
うにmain.cというプログラム中でfunc1
(a,b)という関数が使われていても、main.c
中でfunc1(a,b)がどのような関数であるかの
定義を記述した箇所がなければこの関数はプログラムデ
バッグ手段で情報不足と見なされ、main.cのデバ
ッグは不可能である。
【0003】ところで、プログラム規模が大きくなれば
なるほど、プログラムを機能別のモジュールに分けて設
計し管理することの重要性やモジュール、関数単位での
デバッグの必要性が高まる。また、モジュールや関数の
コーディング終了時点でのデバッグも要求される。この
場合にある単体のモジュールや関数の中で他の関数や他
のモジュールにある関数等を参照する箇所があれば、そ
のモジュールや関数を単体でデバッグすることはできな
い。
なるほど、プログラムを機能別のモジュールに分けて設
計し管理することの重要性やモジュール、関数単位での
デバッグの必要性が高まる。また、モジュールや関数の
コーディング終了時点でのデバッグも要求される。この
場合にある単体のモジュールや関数の中で他の関数や他
のモジュールにある関数等を参照する箇所があれば、そ
のモジュールや関数を単体でデバッグすることはできな
い。
【0004】従来例を図面に基づき説明する。図8は、
従来例の構成図である。言語処理装置802は、入力フ
ァイル801を入力するファイル入力部803、構文解
析部804、コード生成部805およびオブジェクト情
報をオブジェクトコードファイル807に出力するファ
イル出力部806を備える。図9は、この言語処理装置
の処理フローである。まず、入力ソースファイルをオー
プンして(ステップS901)ファイルの先頭から1行
の終わりを示す特殊文字までを読み込み(ステップS9
02)、ステップS903で一行の先頭から一文字ずつ
解析して意味のある最小単位の文字列に切り分け、それ
らの文字列を解析してその構造を認識する。このときに
ファイルの終わり(以下、EOFという)でなければ
(ステップS904)、取り出した文字列の解析を行
い、その文字列がシンボルであると(ステップS90
5)、シンボルテーブルへの登録を行う(ステップS9
06)。次に、解析情報にもとづいて読み込んだ1行に
対応するオブジェクトコードを割り当てる(ステップS
907)。同様にして次の1行を読み込みステップS9
02からステップS907までの処理を繰り返し、ステ
ップS904でEOFが検出されると、オブジェクトコ
ードファイルを出力する(ステップS908)。
従来例の構成図である。言語処理装置802は、入力フ
ァイル801を入力するファイル入力部803、構文解
析部804、コード生成部805およびオブジェクト情
報をオブジェクトコードファイル807に出力するファ
イル出力部806を備える。図9は、この言語処理装置
の処理フローである。まず、入力ソースファイルをオー
プンして(ステップS901)ファイルの先頭から1行
の終わりを示す特殊文字までを読み込み(ステップS9
02)、ステップS903で一行の先頭から一文字ずつ
解析して意味のある最小単位の文字列に切り分け、それ
らの文字列を解析してその構造を認識する。このときに
ファイルの終わり(以下、EOFという)でなければ
(ステップS904)、取り出した文字列の解析を行
い、その文字列がシンボルであると(ステップS90
5)、シンボルテーブルへの登録を行う(ステップS9
06)。次に、解析情報にもとづいて読み込んだ1行に
対応するオブジェクトコードを割り当てる(ステップS
907)。同様にして次の1行を読み込みステップS9
02からステップS907までの処理を繰り返し、ステ
ップS904でEOFが検出されると、オブジェクトコ
ードファイルを出力する(ステップS908)。
【0005】
【発明が解決しようとする課題】言語処理装置から得れ
れたオブジェクトは、最終的に実行環境であるターゲッ
トマシン上でプログラムを実行するために用いられる
が、プログラム中のある時点で正しいデータがやりとり
されているか期待通りの動作をして期待値を正しく返す
か等を確かめるための試験的な実行を行うために、ター
ゲットCPUを搭載したハードウェアエミュレータやソ
フトウェアシミュレータ等のデバッグ手段上で使用され
ることも多い。このようなデバッグ段階のプログラムは
開発途中のものであるとはいえ、少なくとも変数の定義
とその値、関数の定義とその内部処理などは記述されて
いる必要がある。
れたオブジェクトは、最終的に実行環境であるターゲッ
トマシン上でプログラムを実行するために用いられる
が、プログラム中のある時点で正しいデータがやりとり
されているか期待通りの動作をして期待値を正しく返す
か等を確かめるための試験的な実行を行うために、ター
ゲットCPUを搭載したハードウェアエミュレータやソ
フトウェアシミュレータ等のデバッグ手段上で使用され
ることも多い。このようなデバッグ段階のプログラムは
開発途中のものであるとはいえ、少なくとも変数の定義
とその値、関数の定義とその内部処理などは記述されて
いる必要がある。
【0006】ところで、プログラム規模が大きくなれば
なるほど、プログラムを機能別のモジュールに分けて設
計し管理することの重要性やモジュール、関数単位での
デバッグの必要性も高まる。また、モジュールや関数の
コーディング終了時点でのデバッグも要求される。この
場合に、ある単体のモジュールや関数の中で他の関数や
他のモジュールにある関数等を参照する箇所があればそ
のモジュールや関数を単体でデバッグすることはできな
いことになり、効率的な開発ができない欠点がある。
なるほど、プログラムを機能別のモジュールに分けて設
計し管理することの重要性やモジュール、関数単位での
デバッグの必要性も高まる。また、モジュールや関数の
コーディング終了時点でのデバッグも要求される。この
場合に、ある単体のモジュールや関数の中で他の関数や
他のモジュールにある関数等を参照する箇所があればそ
のモジュールや関数を単体でデバッグすることはできな
いことになり、効率的な開発ができない欠点がある。
【0007】本発明は、このような欠点を除去するもの
で、ソースプログラムに対してのデバッグが効率的に行
えるコードを作成する手段をもつ言語処理装置を提供す
ることを目的とする。
で、ソースプログラムに対してのデバッグが効率的に行
えるコードを作成する手段をもつ言語処理装置を提供す
ることを目的とする。
【0008】
【課題を解決するための手段】本発明は、入力したソー
スプログラムの構文を解析する構文解析手段と、この構
文解析手段での解析結果に基づきオブジェクトコードフ
ァイルを生成するコード生成部とを備えた言語処理装置
において、上記入力したソースプログラム中の未定義の
関数を検索する未定義関数検索部と、上記未定義関数検
索部で検索された関数のデータ型、引数、戻り値の定義
を記述したダミーファイルを作成するダミーファイル生
成部である未定義関数用ダミーファイル生成部と、この
ダミーファイル生成部で生成されたダミーファイルと上
記コード生成部で生成されたオブジェクトコードファイ
ルとを結合して出力するファイル出力部とを備えたこと
を特徴とする。
スプログラムの構文を解析する構文解析手段と、この構
文解析手段での解析結果に基づきオブジェクトコードフ
ァイルを生成するコード生成部とを備えた言語処理装置
において、上記入力したソースプログラム中の未定義の
関数を検索する未定義関数検索部と、上記未定義関数検
索部で検索された関数のデータ型、引数、戻り値の定義
を記述したダミーファイルを作成するダミーファイル生
成部である未定義関数用ダミーファイル生成部と、この
ダミーファイル生成部で生成されたダミーファイルと上
記コード生成部で生成されたオブジェクトコードファイ
ルとを結合して出力するファイル出力部とを備えたこと
を特徴とする。
【0009】
【作用】未定義の関数を検索し、未定義部分の補足部分
をファイルに出力し、コードの作成を行う。このコード
を用いて効率的なデバッグを行う。
をファイルに出力し、コードの作成を行う。このコード
を用いて効率的なデバッグを行う。
【0010】
【実施例】以下、図面に基づき本発明の一実施例を説明
する。図1は、この実施例のシステム構成図である。フ
ァイル入力部103、構文解析部104、コード生成部
105およびファイル出力部109は、従来例のファイ
ル入力部803、構文解析部804、コード生成部80
5およびファイル出力部806と同じ機能を有する。こ
の実施例での新たな機能である未定義関数処理部106
は、入力ソースプログラム中の未定義の関数を検索し、
それらの関数の定義を記述したファイルを生成する手段
である。この未定義関数処理部106は、未定義関数検
索部107および未定義関数用ダミーファイル生成部1
08から成り立ち、ここで生成され再度言語処理装置1
02にかけられるダミーファイルは図7に示すダミーフ
ァイル例705のstab.cのような形態をとる。す
なわち、未定義関数の検索用関数stabの実体の定義
と未定義関数(ここではfunc1)について必要最低
限の定義とを行ったダミー関数を記述したものである。
後述のように、プログラムデバッグ手段707で関数s
tabを検出した時点でブレークをかけるように指定す
ることにより、未完成の関数であるfunc1の検出
と、必要であればこの関数に追加したい情報を情報入力
手段708から入力することができる。言語処理装置1
02を通して出力されたオブジェクトコードファイル1
10は、プログラムデバッグ手段111でデバッグされ
てデバッグ結果118を出力するが、その間に、オブジ
ェクトコードファイルをターゲットファイルとしてプロ
グラムデバッグ手段111に入力するターゲットファイ
ル入力部112、未定義関数用のダミー関数を検出する
ためのブレークポイント設定部113、通常のデバッグ
作業として発行されたコマンドを入力するデバッグコマ
ンド入力部114、そのコマンドを解析するデバッグコ
マンド解析部115、それらで処理されたコマンドを実
行するデバッグコマンド実行部116および実行した結
果を出力するデバッグ結果出力部117を経由する。
する。図1は、この実施例のシステム構成図である。フ
ァイル入力部103、構文解析部104、コード生成部
105およびファイル出力部109は、従来例のファイ
ル入力部803、構文解析部804、コード生成部80
5およびファイル出力部806と同じ機能を有する。こ
の実施例での新たな機能である未定義関数処理部106
は、入力ソースプログラム中の未定義の関数を検索し、
それらの関数の定義を記述したファイルを生成する手段
である。この未定義関数処理部106は、未定義関数検
索部107および未定義関数用ダミーファイル生成部1
08から成り立ち、ここで生成され再度言語処理装置1
02にかけられるダミーファイルは図7に示すダミーフ
ァイル例705のstab.cのような形態をとる。す
なわち、未定義関数の検索用関数stabの実体の定義
と未定義関数(ここではfunc1)について必要最低
限の定義とを行ったダミー関数を記述したものである。
後述のように、プログラムデバッグ手段707で関数s
tabを検出した時点でブレークをかけるように指定す
ることにより、未完成の関数であるfunc1の検出
と、必要であればこの関数に追加したい情報を情報入力
手段708から入力することができる。言語処理装置1
02を通して出力されたオブジェクトコードファイル1
10は、プログラムデバッグ手段111でデバッグされ
てデバッグ結果118を出力するが、その間に、オブジ
ェクトコードファイルをターゲットファイルとしてプロ
グラムデバッグ手段111に入力するターゲットファイ
ル入力部112、未定義関数用のダミー関数を検出する
ためのブレークポイント設定部113、通常のデバッグ
作業として発行されたコマンドを入力するデバッグコマ
ンド入力部114、そのコマンドを解析するデバッグコ
マンド解析部115、それらで処理されたコマンドを実
行するデバッグコマンド実行部116および実行した結
果を出力するデバッグ結果出力部117を経由する。
【0011】すなわち、この実施例は、図1に示すよう
に、ファイル入力部103と、このファイル入力部10
3が入力したソースプログラムの構文を解析する構文解
析手段104と、この構文解析手段での解析結果に基づ
きオブジェクトコードファイルを生成するコード生成部
105とを備え、さらに、本発明の特徴とする手段とし
て、上記入力したソースプログラム中の未定義の関数を
検索する未定義関数検索部107と、未定義関数検索部
107で検索された関数のデータ型、引数、戻り値の定
義を記述したダミーファイルを作成するダミーファイル
生成部である未定義関数用ダミーファイル生成部108
と、このダミーファイル生成部で生成されたダミーファ
イルと上記コード生成部105で生成されたオブジェク
トコードファイルとを結合して出力するファイル出力部
109とを備える。
に、ファイル入力部103と、このファイル入力部10
3が入力したソースプログラムの構文を解析する構文解
析手段104と、この構文解析手段での解析結果に基づ
きオブジェクトコードファイルを生成するコード生成部
105とを備え、さらに、本発明の特徴とする手段とし
て、上記入力したソースプログラム中の未定義の関数を
検索する未定義関数検索部107と、未定義関数検索部
107で検索された関数のデータ型、引数、戻り値の定
義を記述したダミーファイルを作成するダミーファイル
生成部である未定義関数用ダミーファイル生成部108
と、このダミーファイル生成部で生成されたダミーファ
イルと上記コード生成部105で生成されたオブジェク
トコードファイルとを結合して出力するファイル出力部
109とを備える。
【0012】次に、この実施例の動作を説明する。図2
は、言語処理装置102での処理を示すフロー図であ
る。まず、入力ソースファイルをオープンして(ステッ
プS201)ファイルの先頭から1行の終わりを示す特
殊文字までを読み込み(ステップS202)、ステップ
S203で一行の先頭から一文字ずつ解析して意味のあ
る最小単位の文字列に切り分け、それらの文字列を解析
してその構造を認識し、EOFでなく(ステップS20
4)、かつ、取り出した文字列がシンボルであれば(ス
テップS205)、シンボルテーブルへの登録を行う
(ステップS206)。このようにして得られた解析情
報にもとづいて読み込んだ1行に対応するオブジェクト
コードを割り当てる(ステップS207)。同様にして
次の1行を読み込み、ステップS202からステップS
207までの処理をステップS204でEOFが検出さ
れるまで繰り返す。ここまでの処理は、従来例での処理
であるステップS901からステップS907までと同
様である。次に本発明で追加したステップS209の処
理を行う。ステップS209では、シンボルテーブルを
サーチして関数属性のシンボルのうちに未定義のものが
あるか否かを判断し、そのような関数が含まれていれば
その関数と引数について必要最低限の定義を行い、戻り
値としてデバッグ時に容易に検出できるように検索用関
数を設置したダミー関数を記述したダミーファイルを作
成し(ステップS210)、そのファイルを再び言語処
理装置にかけてステップS201からステップS207
までの処理を行うことによってダミーコードを作成し、
オブジェクトコードファイルに先に生成したコードとと
もに出力する(ステップS211)。
は、言語処理装置102での処理を示すフロー図であ
る。まず、入力ソースファイルをオープンして(ステッ
プS201)ファイルの先頭から1行の終わりを示す特
殊文字までを読み込み(ステップS202)、ステップ
S203で一行の先頭から一文字ずつ解析して意味のあ
る最小単位の文字列に切り分け、それらの文字列を解析
してその構造を認識し、EOFでなく(ステップS20
4)、かつ、取り出した文字列がシンボルであれば(ス
テップS205)、シンボルテーブルへの登録を行う
(ステップS206)。このようにして得られた解析情
報にもとづいて読み込んだ1行に対応するオブジェクト
コードを割り当てる(ステップS207)。同様にして
次の1行を読み込み、ステップS202からステップS
207までの処理をステップS204でEOFが検出さ
れるまで繰り返す。ここまでの処理は、従来例での処理
であるステップS901からステップS907までと同
様である。次に本発明で追加したステップS209の処
理を行う。ステップS209では、シンボルテーブルを
サーチして関数属性のシンボルのうちに未定義のものが
あるか否かを判断し、そのような関数が含まれていれば
その関数と引数について必要最低限の定義を行い、戻り
値としてデバッグ時に容易に検出できるように検索用関
数を設置したダミー関数を記述したダミーファイルを作
成し(ステップS210)、そのファイルを再び言語処
理装置にかけてステップS201からステップS207
までの処理を行うことによってダミーコードを作成し、
オブジェクトコードファイルに先に生成したコードとと
もに出力する(ステップS211)。
【0013】こうして得られたオブジェクトコードをプ
ログラムデバッグ手段111を用いてデバッグするが、
このプログラムデバッグ手段111内部の処理フローを
図3および図4を使って説明する。図3は、デバッグ準
備工程の処理フローを示す。ターゲットファイルはステ
ップS301でオープンされ、ステップS302でプロ
グラムデバッグ手段に入力される。次に、前述の言語処
理装置で生成されたソースプログラム中の未定義の関数
の仮定義を記述したダミー関数部分のデバッグ中の検索
を容易にするために、ダミー関数の戻り値として設置し
たダミー関数検索用関数(図7のstab705がこれ
にあたる。)に対してブレークポイントを発行する。こ
れは、デバッグ時にプログラムの実行をダミー関数中で
止め、その時点で関数に情報を入力してデバッグを再開
させることを可能にするための処理である。まず、プロ
グラムデバッグ手段に対して関数検索用ブレークポイン
ト設定コマンド入力(ステップS303)を行うと、プ
ログラムデバッグ手段がコマンドを一行読み込み(ステ
ップS304)、コマンドの構文解析を行い(ステップ
S305)、ステップS303で入力したブレークポイ
ント情報をデバッガ内部に登録し(ステップS30
6)、設定が完了したことを表す表示を出力する(ステ
ップS307)。こうしてデバッグ準備工程が完了する
と、プログラムデバッグ工程に入る。
ログラムデバッグ手段111を用いてデバッグするが、
このプログラムデバッグ手段111内部の処理フローを
図3および図4を使って説明する。図3は、デバッグ準
備工程の処理フローを示す。ターゲットファイルはステ
ップS301でオープンされ、ステップS302でプロ
グラムデバッグ手段に入力される。次に、前述の言語処
理装置で生成されたソースプログラム中の未定義の関数
の仮定義を記述したダミー関数部分のデバッグ中の検索
を容易にするために、ダミー関数の戻り値として設置し
たダミー関数検索用関数(図7のstab705がこれ
にあたる。)に対してブレークポイントを発行する。こ
れは、デバッグ時にプログラムの実行をダミー関数中で
止め、その時点で関数に情報を入力してデバッグを再開
させることを可能にするための処理である。まず、プロ
グラムデバッグ手段に対して関数検索用ブレークポイン
ト設定コマンド入力(ステップS303)を行うと、プ
ログラムデバッグ手段がコマンドを一行読み込み(ステ
ップS304)、コマンドの構文解析を行い(ステップ
S305)、ステップS303で入力したブレークポイ
ント情報をデバッガ内部に登録し(ステップS30
6)、設定が完了したことを表す表示を出力する(ステ
ップS307)。こうしてデバッグ準備工程が完了する
と、プログラムデバッグ工程に入る。
【0014】図4は、言語処理装置で処理した未定義関
数を含むプログラムのデバッグをプログラムデバッグ手
段で行う場合の処理フローを表している。ただし、図3
の処理を準備工程として既に行っているものとする。プ
ログラムデバッグ手段では、ステップS401で入力さ
れたコマンドをステップS402でコマンド行の一行分
読み込み、ステップS403でコマンドの構文解析を行
い、そのコマンドがデバッガ終了コマンドでなかったら
(ステップS404)、そのコマンドの実行を行い(ス
テップS405)、コマンド実行結果の出力(ステップ
S406)を行う。このときに、コマンド実行結果とし
てプログラム実行中のブレークポイント検出による停止
を表すメッセージが出力され(ステップS407)、か
つそのブレークが図3で設定した関数検出用ブレークポ
イントで起こったものであったら(ステップS40
8)、その時点でその関数についての不足情報を入力す
る(ステップS409)こともできる。このステップS
401からステップS409までの動作をステップS4
04でデバッガ終了コマンドが検出されるまで繰り返
す。こうして未完成のプログラムに情報を入力しながら
デバッグを行うことで、より正確なプログラムを構築す
ることができる。
数を含むプログラムのデバッグをプログラムデバッグ手
段で行う場合の処理フローを表している。ただし、図3
の処理を準備工程として既に行っているものとする。プ
ログラムデバッグ手段では、ステップS401で入力さ
れたコマンドをステップS402でコマンド行の一行分
読み込み、ステップS403でコマンドの構文解析を行
い、そのコマンドがデバッガ終了コマンドでなかったら
(ステップS404)、そのコマンドの実行を行い(ス
テップS405)、コマンド実行結果の出力(ステップ
S406)を行う。このときに、コマンド実行結果とし
てプログラム実行中のブレークポイント検出による停止
を表すメッセージが出力され(ステップS407)、か
つそのブレークが図3で設定した関数検出用ブレークポ
イントで起こったものであったら(ステップS40
8)、その時点でその関数についての不足情報を入力す
る(ステップS409)こともできる。このステップS
401からステップS409までの動作をステップS4
04でデバッガ終了コマンドが検出されるまで繰り返
す。こうして未完成のプログラムに情報を入力しながら
デバッグを行うことで、より正確なプログラムを構築す
ることができる。
【0015】次に、本発明の第二実施例を図7を用いて
説明する。言語処理装置703は、入力ファイル701
を入力して解析し、そのファイル中に未定義の関数が存
在する場合にはその引数や戻り値について必要最低限の
定義を行い、戻り値に検出用の関数を埋め込んだダミー
関数を記述したダミーファイルを作成し、入力ファイル
とダミーファイルとの双方に対して言語処理を行ってそ
れらを一つのオブジェクトコードファイル706にまと
め、出力する機能を有するものであり、それをプログラ
ムデバッグ手段707でデバッグする際にダミーファイ
ル704に埋め込まれた関数検索用関数(stab70
5にあたる)を発見すると一時停止するコマンドを登録
しておくことにより、その関数に対して追加したい情報
を情報入力手段708から入力しながらデバッグを行う
ことを可能にする。
説明する。言語処理装置703は、入力ファイル701
を入力して解析し、そのファイル中に未定義の関数が存
在する場合にはその引数や戻り値について必要最低限の
定義を行い、戻り値に検出用の関数を埋め込んだダミー
関数を記述したダミーファイルを作成し、入力ファイル
とダミーファイルとの双方に対して言語処理を行ってそ
れらを一つのオブジェクトコードファイル706にまと
め、出力する機能を有するものであり、それをプログラ
ムデバッグ手段707でデバッグする際にダミーファイ
ル704に埋め込まれた関数検索用関数(stab70
5にあたる)を発見すると一時停止するコマンドを登録
しておくことにより、その関数に対して追加したい情報
を情報入力手段708から入力しながらデバッグを行う
ことを可能にする。
【0016】前述の第一の実施例では、言語処理装置は
入力ファイルを言語処理する過程で未定義の関数を発見
してダミーファイルを作成して再びダミーファイルの言
語処理を行ったが、この第二の実施例では、図5に示す
ように、言語処理機能を未定義関数検出処理ステップS
502と言語処理ステップS511とに分ける。まず、
入力ファイルをオープン(ステップS501)した後
に、未定義関数検出処理ステップS502に入り、ファ
イルの先頭から1行の終わりを示す特殊文字までを読み
込み(ステップS503)、ステップS504で一行の
先頭から一文字ずつ解析して意味のある最小単位の文字
列に切り分け、その文字列を解析してその構造を認識
し、EOFでなければ(ステップS505)、取り出し
た文字列を解析し、シンボルであったら(ステップS5
06)シンボルテーブルファイルへの登録を行う(ステ
ップS507)。同様にして次の1行を読み込みステッ
プS503からステップS507までの処理をステップ
S505でEOFが検出されるまで続ける。次にこのよ
うにして作成したシンボルテーブルファイルのうちの関
数属性を持ったシンボルについてサーチを行い(ステッ
プS508)、その中で未定義のものがあれば(ステッ
プS509)、ダミーファイルを生成する(ステップS
510)。ダミーファイルとは、ステップS509で発
見した未定義の関数について関数と引数の必要最低限の
定義を行い、戻り値としてデバッグ時に容易にデバッグ
できるように検索用関数を設置したものである。次に言
語処理ステップS511を行うが、ステップS509で
未定義関数がなければ入力ファイル処理部ステップS5
12で入力ファイルの言語処理を行ってオブジェクトコ
ードファイルを出力する(ステップS516)。ステッ
プS509で未定義関数が発見され、ステップS510
で生成されたダミーファイルがあれば、ダミーファイル
処理部ステップS513と入力ファイル処理部ステップ
S514とで言語処理を行い、ダミーファイルと入力フ
ァイル双方から得られたコードをリンクして(ステップ
S515)オブジェクトコードファイルを取り出す(ス
テップS516)。この入力ファイル処理ステップS5
12およびステップS514は図6のステップS601
からステップS607までの処理に対応するが、ステッ
プS601で入力ファイルをオープンしたあとステップ
S602からステップS607までの処理は図9の従来
例でのステップS902からステップS907までの処
理と同じである。また、ダミーファイル処理(ステップ
S513)は図6のステップS608からステップS6
14までの処理に対応するが、ステップS608でダミ
ーファイルをオープンしたあとステップS609からス
テップS614までの処理は図9の従来例でのステップ
S902からステップS907までの処理と同じであ
る。
入力ファイルを言語処理する過程で未定義の関数を発見
してダミーファイルを作成して再びダミーファイルの言
語処理を行ったが、この第二の実施例では、図5に示す
ように、言語処理機能を未定義関数検出処理ステップS
502と言語処理ステップS511とに分ける。まず、
入力ファイルをオープン(ステップS501)した後
に、未定義関数検出処理ステップS502に入り、ファ
イルの先頭から1行の終わりを示す特殊文字までを読み
込み(ステップS503)、ステップS504で一行の
先頭から一文字ずつ解析して意味のある最小単位の文字
列に切り分け、その文字列を解析してその構造を認識
し、EOFでなければ(ステップS505)、取り出し
た文字列を解析し、シンボルであったら(ステップS5
06)シンボルテーブルファイルへの登録を行う(ステ
ップS507)。同様にして次の1行を読み込みステッ
プS503からステップS507までの処理をステップ
S505でEOFが検出されるまで続ける。次にこのよ
うにして作成したシンボルテーブルファイルのうちの関
数属性を持ったシンボルについてサーチを行い(ステッ
プS508)、その中で未定義のものがあれば(ステッ
プS509)、ダミーファイルを生成する(ステップS
510)。ダミーファイルとは、ステップS509で発
見した未定義の関数について関数と引数の必要最低限の
定義を行い、戻り値としてデバッグ時に容易にデバッグ
できるように検索用関数を設置したものである。次に言
語処理ステップS511を行うが、ステップS509で
未定義関数がなければ入力ファイル処理部ステップS5
12で入力ファイルの言語処理を行ってオブジェクトコ
ードファイルを出力する(ステップS516)。ステッ
プS509で未定義関数が発見され、ステップS510
で生成されたダミーファイルがあれば、ダミーファイル
処理部ステップS513と入力ファイル処理部ステップ
S514とで言語処理を行い、ダミーファイルと入力フ
ァイル双方から得られたコードをリンクして(ステップ
S515)オブジェクトコードファイルを取り出す(ス
テップS516)。この入力ファイル処理ステップS5
12およびステップS514は図6のステップS601
からステップS607までの処理に対応するが、ステッ
プS601で入力ファイルをオープンしたあとステップ
S602からステップS607までの処理は図9の従来
例でのステップS902からステップS907までの処
理と同じである。また、ダミーファイル処理(ステップ
S513)は図6のステップS608からステップS6
14までの処理に対応するが、ステップS608でダミ
ーファイルをオープンしたあとステップS609からス
テップS614までの処理は図9の従来例でのステップ
S902からステップS907までの処理と同じであ
る。
【0017】
【発明の効果】本発明は、以上説明したように、未定義
の関数を含むプログラムについてコンパイル時に、未定
義の関数の検索と、その関数の引数、戻り値のデータ型
を定義し戻り値として検索用関数を埋め込んだダミーフ
ァイルの作成を行って再コンパイルし、その結果をオブ
ジェクトコードファイルに出力するので、情報不足でデ
バッグが不可能であったプログラムについても、デバッ
グ時に関数を検索して情報を追加しながらデバッグを行
うことを可能にする効果がある。
の関数を含むプログラムについてコンパイル時に、未定
義の関数の検索と、その関数の引数、戻り値のデータ型
を定義し戻り値として検索用関数を埋め込んだダミーフ
ァイルの作成を行って再コンパイルし、その結果をオブ
ジェクトコードファイルに出力するので、情報不足でデ
バッグが不可能であったプログラムについても、デバッ
グ時に関数を検索して情報を追加しながらデバッグを行
うことを可能にする効果がある。
【図1】本発明実施例の構成を示すブロック構成図。
【図2】本発明第一実施例の動作を示すフローチャー
ト。
ト。
【図3】本発明第一実施例の動作を示すフローチャー
ト。
ト。
【図4】本発明第一実施例の動作を示すフローチャー
ト。
ト。
【図5】本発明第二実施例の動作を示すフローチャー
ト。
ト。
【図6】本発明第二実施例の動作を示すフローチャー
ト。
ト。
【図7】本発明で行われる処理の説明に用いられる図。
【図8】従来例の構成を示すブロック構成図。
【図9】従来例の動作を示すフローチャート。
101、701、801 入力ファイル 102、703、802 言語処理装置 103、803 ファイル入力部 104、804 構文解析部 105、805 コード生成部 106 未定義関数処理部 107 未定義関数検索部 108 未定義関数用ダミーファイル生成部 109、806 ファイル出力部 110、706、807 オブジェクトコードファイル 111、707 プログラムデバッグ手段 112 ターゲットファイル入力部 113 未定義関数検出用 ブレークポイント設定部 114 デバッグコマンド入力部 115 デバッグコマンド解析部 116 デバッグコマンド実行部 117 デバッグ結果出力部 118、709 デバッグ結果 702 入力ファイル例 704 ダミーファイル 705 ダミーファイル例 708 情報入力手段
Claims (1)
- 【請求項1】 入力したソースプログラムの構文を解析
する構文解析手段と、 この構文解析手段での解析結果に基づきオブジェクトコ
ードファイルを生成するコード生成部とを備えた言語処
理装置において、 上記入力したソースプログラム中の未定義の関数を検索
する未定義関数検索部と、 上記未定義関数検索部で検索された関数のデータ型、引
数、戻り値の定義を記述したダミーファイルを作成する
ダミーファイル生成部である未定義関数用ダミーファイ
ル生成部と、 このダミーファイル生成部で生成されたダミーファイル
と上記コード生成部で生成されたオブジェクトコードフ
ァイルとを結合して出力するファイル出力部とを備えた
ことを特徴とする言語処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4014323A JPH05204700A (ja) | 1992-01-29 | 1992-01-29 | 言語処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4014323A JPH05204700A (ja) | 1992-01-29 | 1992-01-29 | 言語処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05204700A true JPH05204700A (ja) | 1993-08-13 |
Family
ID=11857868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4014323A Pending JPH05204700A (ja) | 1992-01-29 | 1992-01-29 | 言語処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05204700A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006236336A (ja) * | 2005-02-22 | 2006-09-07 | Microsoft Corp | ソースコード静的分析シミュレータのためのカスタムapiモデリング |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6292032A (ja) * | 1985-10-17 | 1987-04-27 | Omron Tateisi Electronics Co | プログラムテスト方法 |
JPS6459536A (en) * | 1987-08-31 | 1989-03-07 | Toshiba Corp | Program converter |
JPH03122721A (ja) * | 1989-10-05 | 1991-05-24 | Nec Corp | 未定義シンボル実行方式 |
-
1992
- 1992-01-29 JP JP4014323A patent/JPH05204700A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6292032A (ja) * | 1985-10-17 | 1987-04-27 | Omron Tateisi Electronics Co | プログラムテスト方法 |
JPS6459536A (en) * | 1987-08-31 | 1989-03-07 | Toshiba Corp | Program converter |
JPH03122721A (ja) * | 1989-10-05 | 1991-05-24 | Nec Corp | 未定義シンボル実行方式 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006236336A (ja) * | 2005-02-22 | 2006-09-07 | Microsoft Corp | ソースコード静的分析シミュレータのためのカスタムapiモデリング |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2795244B2 (ja) | プログラムデバッグシステム | |
US9389849B2 (en) | Test case pattern matching | |
US20040049768A1 (en) | Method and program for compiling processing, and computer-readable medium recoding the program thereof | |
JPH08202545A (ja) | ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法 | |
JP2004164554A (ja) | プログラム実行監視装置および方法 | |
JP2001522084A (ja) | 機械語記述からisaシミュレータとアセンブラを生成する方法 | |
JPWO2008120287A1 (ja) | モジュール生成装置、モジュール生成方法、モジュール生成プログラムおよび該プログラムを記録した記録媒体 | |
JP3196675B2 (ja) | 言語処理方式 | |
JPH05204700A (ja) | 言語処理装置 | |
JP2010287101A (ja) | ソフトウエアデバッグ装置及び方法 | |
JP2004287869A (ja) | プログラム実行監視装置および方法 | |
Ipate et al. | A unified integration and component testing approach from deterministic stream X-machine specifications | |
JP2003050722A (ja) | プログラム解析システムとプログラム解析方法 | |
JP2002116911A (ja) | オブジェクト指向プログラムの自動生成装置 | |
JP2014206948A (ja) | エントリーポイント抽出装置 | |
JP2012212281A (ja) | プログラムの影響範囲設定装置、並びにこれを用いた影響範囲特定方法及び影響波及のあるプログラムの抽出方法 | |
JPH10289123A (ja) | 最適化コードデバッグ方式 | |
JP4371000B2 (ja) | Idlコンパイル装置、idlコンパイル方法及びidlコンパイラ | |
JP2006003987A (ja) | デバッグ方法およびデバッガ | |
JPH11154093A (ja) | プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体 | |
JP2001256075A (ja) | 開発システム、開発方法、記録媒体 | |
JP6011988B2 (ja) | 影響範囲調査方法及び影響範囲調査装置 | |
JP6447358B2 (ja) | ソースコード生成プログラム、ソースコード生成方法およびコンピュータ | |
JPH08212105A (ja) | プログラム管理装置 | |
JP2004280476A (ja) | プログラム開発装置、およびプログラム開発プログラム |