JPH05197561A - コンパイル方式 - Google Patents

コンパイル方式

Info

Publication number
JPH05197561A
JPH05197561A JP4007672A JP767292A JPH05197561A JP H05197561 A JPH05197561 A JP H05197561A JP 4007672 A JP4007672 A JP 4007672A JP 767292 A JP767292 A JP 767292A JP H05197561 A JPH05197561 A JP H05197561A
Authority
JP
Japan
Prior art keywords
error
intermediate code
information
editor
source
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
JP4007672A
Other languages
English (en)
Inventor
Daisuke Sasaki
大介 佐々木
Hideshi Koseki
秀史 小関
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 JP4007672A priority Critical patent/JPH05197561A/ja
Priority to US08/004,533 priority patent/US5394550A/en
Publication of JPH05197561A publication Critical patent/JPH05197561A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation

Abstract

(57)【要約】 【目的】 エラー検出後の、再コンパイル処理での無駄
な翻訳情報生成処理を最小限にし、エラーを含むソース
ファイルのコンパイル処理効率の向上を図る。 【構成】 コンパイラとエディタとを併用して用いるシ
ステムにおいて、エディタ4によるソース作成・修正処
理後、起動されたコンパイラ5は、翻訳情報を中間コー
ド14として保持しつつ、ソースファイル内の対応する
位置と併せて管理する中間コード管理テーブル13を作
成しながら処理を進める。エラーが検出された場合、そ
の直前までの中間コードとテーブルとを保持したままエ
ディタ処理に移る。再びコンパイラが起動されると、コ
ンパイラ5は、エディタ処理情報と先に保持しておいた
テーブル情報とから再コンパイル開始位置を割り出し、
その位置からコンパイル処理を続行する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、プログラムのコンパイ
ル方式に係り、特に、エラー検出時に、プログラムのコ
ンパイル量を最小にすることができるプログラムのコン
パイル方式に関する。
【0002】
【従来の技術】従来技術のコンパイル方式、例えば、C
言語等のコンパイラは、ソースプログラムの翻訳を行う
場合、翻訳の途中でエラーが検出されると、順次そのエ
ラーの内容を報告して処理を終了し、エラー直前までに
生成された中間コード等の翻訳情報は、その内容が有効
であるか否かにかかわらず破棄されていた。
【0003】また、前記従来技術は、エラーが1件でも
検出された場合、それ以降に生成されるソースプログラ
ムの翻訳情報が無効であるにもかかわらず、引続き中間
コード等の翻訳情報の生成とエラー情報の出力とが行わ
れる場合があった。
【0004】そして、前記従来技術は、前述したような
エラーに該当しない軽度のエラーが検出されたとき、エ
ラー内容の報告を行った後、引続き翻訳情報の生成を行
うが、この場合でも該当するエラーの修正後、再コンパ
イル処理を行うため、全ての翻訳情報が結果的に破棄さ
れてしまう場合が少なくないものであった。
【0005】プログラムのコンパイル方式に関する他の
従来技術として、例えば、特開昭63−286940号
公報、特開平1−267732号公報、特開平2−24
9034号公報、特開平2−36434号公報等に記載
された技術が知られている。
【0006】これらの従来技術は、エディタを併用した
コンパイルエラー修正方式に関するものであるが、いず
れも、コンパイルエラー検出直前までに生成された情報
の処理について配慮されていないものである。
【0007】
【発明が解決しようとする課題】前述した従来技術は、
いずれも、コンパイル開始から最初のコンパイルエラー
検出直前までに生成された中間コード等の翻訳情報の利
用について全く配慮されておらず、従って、ソースプロ
グラム中に1箇所でもエラーが検出され該ソースプログ
ラムを修正した後の再コンパイル時に、中間コード及び
翻訳情報の生成をソースファイルの一番始めから再度や
り直さなければならず、エラー箇所がソースプログラム
の終端に近い程、また、ソースプログラム容量が大きい
程、変更のないソースプログラム部分の中間コード及び
翻訳情報の無駄な再生成処理が大きくなるという問題点
を有している。
【0008】また、前述の従来技術は、いずれも、ファ
イル内の最初のエラー検出位置以降のコンパイル処理の
無効性についても特に考慮されていないため、必要以上
に中間コード及びオブジエクト形式のコードの生成が行
われるという問題点を有している。
【0009】本発明の目的は、プログラムのコンパイル
処理において、エラーが検出された後の、再コンパイル
処理での無駄な翻訳情報生成処理を最小限にし、エラー
を含むソースファイルのコンパイル処理効率の向上を図
ることのできるソースプログラムのコンパイル方式を提
供することにある。
【0010】
【課題を解決するための手段】本発明によれば前記目的
は、コンパイラにおいて、その生成した中間コード等の
翻訳情報を、対応するソーステキストのソースファイル
上での位置と対応づけたテーブル情報と共に保持し、再
コンパイル時に再利用することを可能にし、また、最初
のエラーを検出した時点でコンパイル処理を中断あるい
は終了させるようにすることにより達成される。
【0011】
【作用】プログラムのコンパイル時、生成した中間コー
ド等の翻訳情報は、その順序を保持したまま、対応する
ソーステキストのソースファイル上での位置に対応付け
けてテーブル情報として作成され、コンパイルの途中で
エラーが検出された場合、これらの翻訳情報及びテーブ
ル情報を保持したまま、エラー情報の出力を実行した
後、コンパイル処理を中断あるいは終了させる。
【0012】エラー情報をもとに修正されたソースファ
イルを再コンパイルする場合、ソースファイル上の最も
ファイルの先頭に近い修正編集位置からコンパイルを再
開し、テーブル情報に基づいて先に生成され保持されて
いる翻訳情報の対応する位置から新たな翻訳情報を追加
する。
【0013】本発明は、これにより、再コンパイル時に
前回のコンパイルで正しく処理されている中間コード等
の翻訳情報を有効に利用することができるので、無駄な
翻訳情報の生成処理を最小限にすることができる。
【0014】
【実施例】以下、本発明によるコンパイル方式の一実施
例を図面により詳細に説明する。
【0015】図1は本発明の一実施例によるエディタ併
用式のコンパイルシステムの構成を示すブロック図、図
2は中間コード管理テーブルの例を説明する図、図3は
動作を説明するフローチャート、図4はソースファイル
上のソーステキストのステートメント単位の配置を説明
する図、図5はソースステートメントから生成された中
間コードの配置を説明する図、図6は中間コード管理テ
ーブルの具体的な内容を説明する図である。図1におい
て、1はコンパイル&エディットシステム、2はエディ
タ及び制御部、3はエディタ、4は編集位置管理手段、
5はコンパイラ、6はファイル入力手段、7は中間コー
ド作成・管理手段、8はオブジェクト作成手段である。
【0016】図1に示す本発明の一実施例は、コンパイ
ラをエディタと併用し、コンパイルエラー修正の効率を
向上させることのできるシステム(以下、コンパイル&
エディットシステムという)に本発明を適用したもので
ある。
【0017】図1において、コンパイル&エディットシ
ステム1は、少なくともエディタ及び制御部2と、本発
明によるコンパイラ5を備えて構成される。
【0018】エディタ及び制御部2は、少なくともソー
スファイル11(編集前)よりソースファイル12(編
集後)を作成・編集するためのエディタ3を有し、エデ
ィタ3は、ソースファイル11内で編集の行われた位置
の内、最もファイル先頭に近いもの(ソースファイル1
2上でも同位置)を記憶管理する編集位置管理手段4を
有している。
【0019】また、本発明によるコンパイラ5は、ソー
スファイル12の任意の位置からの読み込みを行うこと
のできるファイル入力手段6と、ソーステキストを中間
コード14に翻訳すると共に中間コード管理テーブル1
3を作成する中間コード作成・管理手段7と、中間コー
ドをオブジェクトファイル化するオブジェクト作成手段
8とを備えて構成されている。
【0020】中間コード管理テーブル13は、図2に示
すように、例えば、各ソースステートメント単位に、そ
の存在するソースファイル11上の位置(行番号)と、
該位置に対応する中間コードの存在位置(アドレス等)
とからなる。
【0021】次に、図3に示すフローにより、本発明の
一実施例によるコンパイラの処理動作を説明する。
【0022】(1)エディタ3によるソースファイル1
1の編集処理終了後、エディタ及び制御部2よりコンパ
イラが起動される。このとき、エディタ及び制御部2
は、編集位置記憶管理手段5により保持されたソースフ
ァイル12の先頭に最も近い修正行を示す編集位置情報
を取得し、そこにソーステキストの読み込み開始位置を
セットし、また、再コンパイル処理で、直前のコンパイ
ルによる中間コード管理テーブル13が保持されている
場合、それを参照し中間コード14上の追加開始位置を
取得し、中間コード追加開始位置をセットする(ステッ
プ30)。
【0023】(2)コンパイル処理の開始で、まず、そ
のコンパイル処理が再コンパイル処理であるか否かを調
べ、再コンパイル処理であれば、前述によりセットされ
た中間コード追加開始位置に対するアドレスを取得する
(ステップ31、32)。
【0024】(3)ファイル入力手段6により、ソース
テキストを順次読み込み、読み込まれたソーステキスト
に対して構文解析を実行して、当該プログラムの言語の
文法にあっているか否かのチェックを、本来のコンパイ
ラの機能を用いて行い、公文にエラーがない場合中間コ
ードを生成する(ステップ33〜37)。
【0025】(4)ファイルが終了せず、ステップ35
での構文解析においてエラーが検出されない間、一定の
単位の中間コード生成毎に中間コード管理テーブル13
の作成・追加を行う。この単位は、例えば、ソーステキ
ストレベルにおける1ステートメントである(ステップ
38)。
【0026】(5)ステップ36で、構文にエラーが検
出された場合、そのことが外部に報告され、同時にコン
パイル処理が中断させられる。その後、オペレータによ
り、エディタ3により、その部分のエラーの修正が行わ
れる。このとき、エディタ3は、エラー検出前までのコ
ンパイル動作で得られた有効な中間コードである翻訳従
来技術の範囲を確定し、この情報を中間コード追加開始
位置の情報として前述のテーブルにセットする。その
後、再度ステップ30からの処理が行われ、修正位置か
らのコンパイル処理が行われる。
【0027】(6)全てのエラーが修正され、または、
エラーが検出されずに全ファイルについての処理が終了
すると、得られた中間コードをオブジェクト作成手段8
によりオブジェクトファイル化して処理を終了する(ス
テップ34、39)。
【0028】本発明の一実施例は、前述のような処理を
繰返し実行するものであるが、次に、図4〜図6を参照
して、中間コード生成についてより具体的に説明する。
【0029】ソースファイルの1行内に複数のステート
メントが存在する場合、例えば、図4に示す第n行のよ
うに、ステートメント1、2が存在する場合、該当行番
号に対する中間コード位置として、その行内の第1のス
テートメント、この例の場合、ステートメント1への中
間コードのアドレス、例えば、図5に示すアドレスAが
記録される。
【0030】また、1つのステートメントが複数行にま
たがる場合、例えば、図4に示すように第n+1、n+
2行にまたがるステートメント3が存在する場合、ファ
イル内の全ての行番号に対して、該当ステートメントの
中間コードへのアドレス、この例では図5に示すように
いずれも同一値のアドレスCが記録される。
【0031】図4、5に示した一連の部分は、図6に示
すように中間コード管理テーブル化される。再コンパイ
ル時の中間コード追加作成開始位置としては、本テーブ
ルの行番号の部分をサーチし、最上位編集行に一致する
エントリのアドレス値が採用される。
【0032】また、構文解析においてエラーが検出され
た場合、エラーが検出されたステートメントの直前のス
テートメントまでの中間コード、及び、中間コード管理
テーブルを保持し、コンパイル処理を中断あるいは終了
させる。すなわち、図4の第n+2行目でエラーが検出
された場合、アドレスC直前までの中間コードと、n+
1行目までのアドレスエントリが保持されることにな
る。
【0033】このときコンパイラは、このエラーに連動
する処理、例えば、この例では、エラーに対するソース
ファイル12の修正処理に必要なエラー情報等の生成・
出力を同時に行ってもよい。
【0034】また、必要ならばこのエラー情報等に基づ
いてエディタ及び制御部2によりエディタ3を起動し、
ソースファイル12の修正処理を行わせることができ
る。
【0035】前述した本発明の一実施例によれば、コン
パイラとエディタとを連動させプログラミングシステム
において、コンパイル処理を必要最小限とすることがで
き、コンパイル効率を向上させ、プログラミング効率の
向上を図ることができる。
【0036】
【発明の効果】以上説明したように本発明によれば、す
でに生成した翻訳情報を保持しておくことにより、有効
翻訳情報の二重生成を回避し、また、エラー検出時の処
理中断により無効翻訳情報の生成を回避することが可能
となり、これにより、コンパイル処理量を最小化し、エ
ラーを含むソースファイルのコンパイル処理効率を向上
させることができる。
【図面の簡単な説明】
【図1】本発明の一実施例によるエディタ併用式のコン
パイルシステムの構成を示すブロック図である。
【図2】中間コード管理テーブルの例を説明する図であ
る。
【図3】動作を説明するフローチャートである。
【図4】ソースファイル上のソーステキストのステート
メント単位の配置を説明する図である。
【図5】ソースステートメントから生成された中間コー
ドの配置を説明する図である。
【図6】中間コード管理テーブルの具体的な内容を説明
する図である。
【符号の説明】
1 コンパイル&エディットシステム 2 エディタ及び制御部 3 エディタ 4 編集位置管理手段 5 コンパイラ 6 ファイル入力手段 7 中間コード作成・管理手段 8 オブジェクト作成手段

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムの翻訳を行うコンパイ
    ル方式において、翻訳情報を生成すると共に、該翻訳情
    報と対応するソーステキストのソースファイル上の位置
    情報とを併せてテーブル内に格納管理し、エラー検出後
    のソースファイル修正後の再コンパイル時に、前記テー
    ブルより翻訳情報の有効範囲に関する情報を取得し、そ
    の範囲の翻訳情報を再利用することを特徴とするコンパ
    イル方式。
  2. 【請求項2】 前記翻訳情報の有効範囲に関する情報
    は、エラー検出後のソースファイル修正時に、前記テー
    ブル内に中間コード追加開始位置としてセットされるこ
    とを特徴とする請求項1記載のコンパイル方式。
  3. 【請求項3】 1または2記載のコンパイル方式におい
    て、ソースプログラムの翻訳時に、最初のコンパイルエ
    ラーが検出されたとき、コンパイル処理を中断あるいは
    終了することを特徴とするコンパイル方式。
JP4007672A 1992-01-20 1992-01-20 コンパイル方式 Pending JPH05197561A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP4007672A JPH05197561A (ja) 1992-01-20 1992-01-20 コンパイル方式
US08/004,533 US5394550A (en) 1992-01-20 1993-01-14 System for affecting recompilation of source code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4007672A JPH05197561A (ja) 1992-01-20 1992-01-20 コンパイル方式

Publications (1)

Publication Number Publication Date
JPH05197561A true JPH05197561A (ja) 1993-08-06

Family

ID=11672293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4007672A Pending JPH05197561A (ja) 1992-01-20 1992-01-20 コンパイル方式

Country Status (2)

Country Link
US (1) US5394550A (ja)
JP (1) JPH05197561A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930505A (en) * 1991-12-17 1999-07-27 Hudson Soft Co. Ltd. Method for storing a program into an auxiliary memory
US20060277371A1 (en) * 2005-06-01 2006-12-07 Intel Corporation System and method to instrument references to shared memory

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01196628A (ja) * 1988-01-30 1989-08-08 Nec Corp 再翻訳処理方式
JPH01196629A (ja) * 1988-01-30 1989-08-08 Nec Corp 翻訳処理方式
JPH01196632A (ja) * 1988-01-30 1989-08-08 Nec Corp 再翻訳処理方式
JPH0237429A (ja) * 1988-07-28 1990-02-07 Nec Corp 再翻訳処理の高速化方式
JPH02267632A (ja) * 1989-04-07 1990-11-01 Nec Corp 再翻訳処理方式
JPH0362227A (ja) * 1989-07-31 1991-03-18 Nec Corp 高速再翻訳処理方式

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01267732A (ja) * 1988-04-20 1989-10-25 Ricoh Co Ltd データ処理装置
JPH0236434A (ja) * 1988-07-27 1990-02-06 Nec Corp コンパイラ主導によるソースプログラムの修正方式
JPH02249034A (ja) * 1989-03-22 1990-10-04 Nec Corp 情報処理装置
US5204960A (en) * 1990-01-08 1993-04-20 Microsoft Corporation Incremental compiler

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01196628A (ja) * 1988-01-30 1989-08-08 Nec Corp 再翻訳処理方式
JPH01196629A (ja) * 1988-01-30 1989-08-08 Nec Corp 翻訳処理方式
JPH01196632A (ja) * 1988-01-30 1989-08-08 Nec Corp 再翻訳処理方式
JPH0237429A (ja) * 1988-07-28 1990-02-07 Nec Corp 再翻訳処理の高速化方式
JPH02267632A (ja) * 1989-04-07 1990-11-01 Nec Corp 再翻訳処理方式
JPH0362227A (ja) * 1989-07-31 1991-03-18 Nec Corp 高速再翻訳処理方式

Also Published As

Publication number Publication date
US5394550A (en) 1995-02-28

Similar Documents

Publication Publication Date Title
US5606697A (en) Compiler system for language processing program
JPH05197561A (ja) コンパイル方式
Graham et al. Practical syntactic error recovery in compilers
KR20080045545A (ko) 조건부 영역을 전처리하는 방법
KR19990067823A (ko) 최적화에 있어서 인터럽트 처리의 경감을 실현하는 컴파일러 및 그의 최적화 방법
JPS5922140A (ja) 対話型コンパイル方式
JP2002342129A (ja) コーディングチェック方式
JPS63245738A (ja) プログラム未定義デ−タ項目の自動修正方式
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP3903514B2 (ja) 未定義変数検出の最適化コンパイラ装置
JPH06290052A (ja) 再コンパイル方式
JPH1185536A (ja) 原始プログラムのエラー自動修正装置及び方法
JPH03156641A (ja) コンパイル処理方式
JPH11327887A (ja) 自動部品化機能付コンパイラシステムおよび記録媒体
JP2000242504A (ja) コンパイラ装置
CN111930413A (zh) 一种补丁自动生成方法、装置及系统
JPH0385639A (ja) プログラム言語翻訳機
JPH01149138A (ja) コンパイラにおけるエラー修正方式
JPH04287134A (ja) 簡易トレース情報取得方式
JPH0749788A (ja) コンパイル処理方式
JPH0573330A (ja) 構文解析処理方式
JPH04101229A (ja) コンパイルエラー表示制御方式
JPH06103054A (ja) コーディング用チェックシート生成方式
JPH05257738A (ja) プログラム誤り修正システム
JPH0566949A (ja) 関数定義コンパイルドコード呼出し方式