JPH06290052A - 再コンパイル方式 - Google Patents

再コンパイル方式

Info

Publication number
JPH06290052A
JPH06290052A JP5076627A JP7662793A JPH06290052A JP H06290052 A JPH06290052 A JP H06290052A JP 5076627 A JP5076627 A JP 5076627A JP 7662793 A JP7662793 A JP 7662793A JP H06290052 A JPH06290052 A JP H06290052A
Authority
JP
Japan
Prior art keywords
source program
file
translation information
source
information
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
JP5076627A
Other languages
English (en)
Inventor
Daisuke Sasaki
大介 佐々木
Hideshi Koseki
秀史 小関
Manabu Kawamura
学 川村
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.)
Hitachi Ltd
Hitachi Electronics Services Co Ltd
Original Assignee
Hitachi Ltd
Hitachi Electronics Services 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 Hitachi Ltd, Hitachi Electronics Services Co Ltd filed Critical Hitachi Ltd
Priority to JP5076627A priority Critical patent/JPH06290052A/ja
Publication of JPH06290052A publication Critical patent/JPH06290052A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 ソ−スプログラムの修正後の再コンパイル処
理を効率良く行う。 【構成】 ソースプログラムのコンパイル時に、コンパ
イル処理によって生成した翻訳情報を、対応するソース
プログラム上の位置情報と対応付けて翻訳情報ファイル
に格納するようにし、一度コンパイルしたソースプログ
ラムに対する修正処理時には、ソースプログラム上の修
正位置情報を同翻訳情報ファイルに格納し、修正したソ
−スプログラムの再コンパイル時は前記修正位置情報に
よって既翻訳情報の有効範囲を特定し、修正が加えられ
たソ−スプログラム部分のみについて再コンパイルを行
う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンパイル方式に係わ
り、特に1度コンパイルを行ったソ−スプログラムの修
正後の再コンパイル方式に関する。
【0002】
【従来の技術】従来、C言語等のプログラムコンパイル
処理は、そのソ−スプログラムを格納したソースファイ
ル単位で翻訳情報ファイル(例えばオブジェクトファイ
ル)を一旦生成した後、リンクエディタ等により、該翻
訳情報ファイルと他の翻訳情報ファイル(ライブラリ
等)とのリンクをとることにより最終的なロードモジュ
ールの生成を行うという手順がとられている。
【0003】複数のソースファイルから成るプログラム
の開発においては、各ファイルに格納されたソ−スプロ
グラムの翻訳情報ファイルをデバックが終了するまで、
または次回エンハンスまでの期間保持することにより、
いずれかのソースプログラムの修正があったならば、修
正のあったソースプログラムに限って再コンパイル処理
を行い、修正のないソ−スプログラムについては保持し
ておいた翻訳情報ファイルを利用して新規のロードモジ
ュールを得ることができる。これにより、全てのソース
プログラムを再コンパイルするといった無駄な作業を回
避することができる。
【0004】なお、このことについては、例えば、UN
IXオペレーティングシステム上のccコマンド、ma
keコマンドで実現されており、「UNIX Syst
emV ユーザリファレンスマニュアル 第2版 リリ
ース3.0」(共立出版)、および「UNIX Sys
tem V プログラマガイド リリース3.1」(株
式会社日本ソフトバンク)などに詳しく述べられてい
る。
【0005】
【発明が解決しようとする課題】しかしながら、上記従
来技術においては、再コンパイル処理量の軽減をソース
単位で行っており、修正がソースプログラム上のどの位
置で行われたかについての配慮はされていない。このた
め、ソ−スプログラムの規模に関係無く、修正が発生し
たならば、必ずソ−スプログラム全体の再コンパイル処
理を行わなければならない。すなわち、大規模なソ−ス
プログラムにおいてわずかの修正が行われたとしてソ−
スプログラム全体の再コンパイル処理を行わなければな
らない。このため、修正のないソースファイル部分の翻
訳情報の再生成処理が無駄に重複して行われ、再コンパ
イル処理の効率が極めて悪くなるという問題があった。
【0006】本発明の目的は、再コンパイル処理を効率
良く行うことができる再コンパイル方式を提供すること
である。
【0007】
【課題を解決するための手段】本発明は上記目的を達成
するために、ソースプログラムのコンパイル時に、コン
パイル処理によって生成した翻訳情報を、対応するソー
スプログラム上の位置情報と対応付けて翻訳情報ファイ
ルに格納するようにし、一度コンパイルしたソースプロ
グラムに対する修正処理時には、ソースプログラム上の
修正位置情報を同翻訳情報ファイルに格納し、修正した
ソ−スプログラムの再コンパイル時は前記修正位置情報
によって既翻訳情報の有効範囲を特定し、修正が加えら
れたソ−スプログラム部分のみについて再コンパイルを
行うようにした。
【0008】
【作用】上記手段によれば、一度コンパイルしたソース
プログラムに対する修正処理時には、ソースプログラム
上の修正位置情報を翻訳情報ファイルに格納し、修正し
たソ−スプログラムの再コンパイル時は前記修正位置情
報によって既翻訳情報の有効範囲を特定し、修正が加え
られたソ−スプログラム部分のみについて再コンパイル
を行う。このため、再コンパイル時、修正が影響しない
部分については、先の翻訳情報を利用することで、再コ
ンパイル処理を行う必要がなくなり、再コンパイル処理
を軽減し、その効率を向上させることができる。
【0009】
【実施例】以下、本発明の一実施例について図面を用い
て説明する。
【0010】図1は本発明を適用したコンパイラ及びエ
ディタの一実施例を示す機能構成図である。
【0011】図において、コンパイラ1は、本来のソー
スプログラムコンパイル機能に加えて、少なくともソー
スファイル7上の任意の位置からの読み込みを行うファ
イル入力手段2、ソースプログラムを中間コード9に翻
訳すると共に、中間コード管理テーブル8を作成する中
間コード作成・管理手段3、中間コード9と中間コード
管理テーブル8を翻訳情報ファイル10に編集する翻訳
情報ファイル化手段4を有する。
【0012】一方、エディタ5はソースファイル7内の
ソ−スプログラム上での修正位置情報を翻訳情報ファイ
ル10上に記録する修正位置記録手段6を有する。
【0013】図2は中間コード管理テーブル8の構成例
を示したもので、例えば各ソースステートメント単位
に、それが存在するソースファイル7上での位置を示す
行番号11と、これに対応する中間コードの存在位置を
示すアドレス12とを保持するようになっている。
【0014】図3は翻訳情報ファイル10の構成例を示
したもので、図2の中間コード管理テーブル8と同様に
構成された中間コード管理テーブル14と、中間コード
保持部9と同様に構成された中間コ−ド保持部15と、
ソースファイル7に加えられた修正のうち、先頭に最も
近いもののファイル10上の位置を示す最上位修正位置
情報保持部13とから構成されている。
【0015】図4は最上位修正位置情報保持部13に保
持される最上位修正位置情報の例を示したもので、例え
ば行番号16が格納される。
【0016】図5および図6はそれぞれエディタ5およ
びコンパイラ1の処理フローの一例を示すものである。
【0017】まず、図5に示すエディタ5の処理は、コ
ンパイルエラ−検出後のソ−スプログラムの修正を行う
時、または新規のソ−スプログラムの作成のために起動
される。
【0018】このエディタ5は、起動されてからソース
ファイル7の編集処理を行うが、編集処理が終了したな
らば(ステップ51、52)、修正したソ−スプログラ
ムに対応する翻訳情報ファイル10があるかどうかを調
べ、ある場合は(ステップ53)、その時行った修正処
理のうちファイル7の先頭に最も近い修正行の行番号1
6を翻訳情報ファイル10内の最上位修正位置情報保持
部13に書き込み(ステップ54)、処理を終了し、必
要ならコンパイル処理へ処理を移す。
【0019】次に、図6に示すはコンパイラ1の処理は
エディタ5の処理終了によって起動されるが、コンパイ
ラ1は起動されると、処理しようとするソースファイル
7に対応する翻訳情報ファイル10があるかどうかを調
べ、ある場合は(ステップ601)、まず、ソースプロ
グラムの読み込み開始位置の取得のために、最上位修正
位置情報保持部13に保持された最上位修正位置情報と
しての行番号16を読み込む(ステップ602)。
【0020】ここでの例では、行番号16が翻訳情報の
有効範囲の境界を示す。すなわち、この行番号16より
前の行の翻訳情報は再利用可能であり、それ以降は修正
の影響が出るため、あらためて作り直すことになる。そ
こで、この行番号16を基に、翻訳情報ファイル10よ
り、その直前までの中間コード管理テーブル8の内容
と、ソースプログラム読み込み開始位置直前までの間の
有効な中間コードの読み込みをそれぞれ行う(ステップ
603)。そして、先に取得した行番号16より求めた
ソースプログラム読み込み開始位置より(翻訳情報ファ
イル10が無い場合はファイル7先頭より)ファイル入
力手段2によって、ソースプログラムの読み込みを開始
する(ステップ604)。読み込みはファイル終端に達
するまで(ステップ605)行う。読み込んだソースプ
ログラムに対しては順に構文解析を行ない、当該プログ
ラムの言語の文法にあっているかどうかのチェックが本
来のコンパイラの機能を用いて行う(ステップ60
6)。
【0021】この時、もし構文解析においてエラーが検
出された場合(ステップ607)、エラー処理、例えば
エラー情報等の生成・出力、その他を行う。
【0022】しかし、構文解析においてエラーが検出さ
れない間は、一定の単位の中間コードを生成する度に
(ステップ608)、中間コード管理テーブル8の生成
・追加を行う(ステップ609)。この単位は例えばソ
ースプログラムレベルでの1ステートメントとする。
【0023】ここで、ステップ609の中間コードテー
ブル生成・追加の処理について、図7〜図9を用いてさ
らに詳しく説明する。
【0024】まず、図7に示す第n行のステートメント
1とステートメント2のように、ソースプログラムの1
行内に複数のステートメントが存在する場合、該当の行
番号に対する中間コード位置としては、行内の先頭のス
テートメント1の中間コードへのアドレスが図8に示す
ようにアドレスAとして記録され、その後のステ−トメ
ントのアドレスBは記録されない。
【0025】また、図示のn+1,n+2行のステ−ト
メントのように、1つのステートメント3が複数行にま
たがる場合、そのステートメントがかかっている行の全
行番号に対して、該当ステートメントの中間コードへの
アドレスが図8に示す様に、アドレスCとして記録され
る。
【0026】結局、図7および図8に示した一連の部分
は、図9のように対応付けられて中間コード管理テーブ
ル8に記録される。
【0027】図6のステップ602の再コンパイル時の
ソースファイル読み込み開始位置および中間コード追加
作成開始位置としては、このテーブル8の行番号の部分
をサーチし、最上位修正行に一致するエントリのアドレ
ス値が採用される。
【0028】図6の処理フローに戻って、エラーが検出
されずにソースプログラムの読み込みがファイル7の終
端まで達し(ステップ605)、ファイル7内の全ステ
ートメントが中間コード化されると、それをもとにコン
パイラ1は本来の機能であるオブジェクトファイルの生
成等を行った後(ステップ610)、翻訳情報ファイル
化手段4により、生成された中間コードと中間コード管
理テーブル8のファイル化を行ない(ステップ61
1)、処理を終了する。
【0029】この時、翻訳情報ファイル10の最上位修
正位置情報の部分には例えば、“0”を設定する。これ
は、再コンパイル時に、この値に変化が無ければ、翻訳
情報ファイル10内の情報は全て有効として再利用する
ためである。
【0030】このように、本実施例によれば、コンパイ
ル成功時の翻訳情報を翻訳情報ファイル10として残
し、またその後の新規編集情報を合わせて利用すること
で、ソース修正の影響を受けない部分の再コンパイル処
理を重複して行うと言った無駄な処理を回避することが
でき、再コンパイル処理を効率良く、行うことができ
る。
【0031】なお、本発明は上記実施例に限定されるも
のではなく。要旨を逸脱しない範囲で種々の変更が可能
であることは言うまでもない。
【0032】
【発明の効果】以上説明したように本発明によれば、ソ
ースプログラムのコンパイル時に、コンパイル処理によ
って生成した翻訳情報を、対応するソースプログラム上
の位置情報と対応付けて翻訳情報ファイルに格納するよ
うにし、一度コンパイルしたソースプログラムに対する
修正処理時には、ソースプログラム上の修正位置情報を
同翻訳情報ファイルに格納し、修正したソ−スプログラ
ムの再コンパイル時は前記修正位置情報によって既翻訳
情報の有効範囲を特定し、修正が加えられたソ−スプロ
グラム部分のみについて再コンパイルを行うようにした
ため、再コンパイル時、修正が影響しない部分について
は、先の翻訳情報を利用することで、再コンパイル処理
を行う必要がなくなり、再コンパイル処理を軽減し、そ
の効率を向上させることができる。
【図面の簡単な説明】
【図1】本発明を適用したコンパイラ及びエディタの一
実施例示す構成図である。
【図2】実施例における中間コード管理テーブルの構成
例を示す説明図である。
【図3】実施例における翻訳情報ファイルの構成例を示
す説明図である。
【図4】実施例における最上位修正位置情報の一例を示
す説明図である。
【図5】実施例におけるエディタの処理フローを示すフ
ロ−チャ−トである。
【図6】実施例におけるコンパイラの処理フローを示す
フロ−チャ−トである。
【図7】ソースファイル上のソースプログラムのステー
トメント単位の配置例を示す説明図である。
【図8】図7の各々のソースステートメントから生成さ
れた中間コードの配置例を示す説明図である。
【図9】図7に示したソースプログラムから生成した中
間コードの中間コード管理テーブルの内容例を示す説明
図である。
【符号の説明】
1…コンパイラ、2…ファイル入力手段、3…中間コー
ド作成・管理手段、4…翻訳情報ファイル化手段、5…
エディタ、6…修正位置記録手段、7…ソースファイ
ル、8…中間コード管理テーブル、9…中間コード保持
部、10…翻訳情報ファイル。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 川村 学 東京都千代田区内神田二丁目14番6号 日 立電子サービス株式会社内

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムのコンパイル時に、コ
    ンパイル処理によって生成した翻訳情報を、対応するソ
    ースプログラム上の位置情報と対応付けて翻訳情報ファ
    イルに格納するようにし、一度コンパイルしたソースプ
    ログラムに対する修正処理時には、ソースプログラム上
    の修正位置情報を同翻訳情報ファイルに格納し、修正し
    たソ−スプログラムの再コンパイル時は前記修正位置情
    報によって既翻訳情報の有効範囲を特定し、修正が加え
    られたソ−スプログラム部分のみについて再コンパイル
    を行うことを特徴とする再コンパイル方式。
JP5076627A 1993-04-02 1993-04-02 再コンパイル方式 Pending JPH06290052A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5076627A JPH06290052A (ja) 1993-04-02 1993-04-02 再コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5076627A JPH06290052A (ja) 1993-04-02 1993-04-02 再コンパイル方式

Publications (1)

Publication Number Publication Date
JPH06290052A true JPH06290052A (ja) 1994-10-18

Family

ID=13610608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5076627A Pending JPH06290052A (ja) 1993-04-02 1993-04-02 再コンパイル方式

Country Status (1)

Country Link
JP (1) JPH06290052A (ja)

Similar Documents

Publication Publication Date Title
US5606697A (en) Compiler system for language processing program
US5586328A (en) Module dependency based incremental compiler and method
US5956510A (en) Apparatus and method for revising computer program code
US7823139B2 (en) Method and system for translating programming languages
US6934940B2 (en) Source code transformation-temporary object reduction
KR20020070809A (ko) 포스트-링크 코드 최적화
US7080370B1 (en) Method and apparatus for compiling source programs using one or more libraries
US6256782B1 (en) Compile apparatus, compile method and computer-readable medium storing compiler
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JPH06290052A (ja) 再コンパイル方式
US5394550A (en) System for affecting recompilation of source code
JPH09218789A (ja) 分割コンパイル方式
JP2977642B2 (ja) Fortranコンパイル処理装置
JP2002082811A (ja) コンパイル方法および記録媒体
JP3018783B2 (ja) コンパイル方式
JP3210203B2 (ja) プログラム試験方法及びsqlシミュレータ
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JPH0749788A (ja) コンパイル処理方式
JPH0695890A (ja) コンパイラにおける名前置換方式
JP2000242504A (ja) コンパイラ装置
KR100277479B1 (ko) 칠 분리 컴파일 방법
JPH03156641A (ja) コンパイル処理方式
JPH10240545A (ja) 未定義変数検出の最適化コンパイラ装置
JPS58169637A (ja) コンパイル処理方式
JPH0385639A (ja) プログラム言語翻訳機