JPH0385639A - プログラム言語翻訳機 - Google Patents

プログラム言語翻訳機

Info

Publication number
JPH0385639A
JPH0385639A JP22157389A JP22157389A JPH0385639A JP H0385639 A JPH0385639 A JP H0385639A JP 22157389 A JP22157389 A JP 22157389A JP 22157389 A JP22157389 A JP 22157389A JP H0385639 A JPH0385639 A JP H0385639A
Authority
JP
Japan
Prior art keywords
source
program
source program
intermediate code
code
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
JP22157389A
Other languages
English (en)
Inventor
Hirotoshi Yamada
山田 博敏
Isao Ikeda
功 池田
Michita Nakazawa
中沢 通太
Hiroshi Yamamoto
浩 山本
Manabu Yokota
学 横田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP22157389A priority Critical patent/JPH0385639A/ja
Publication of JPH0385639A publication Critical patent/JPH0385639A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 概   要 プログラム言語で記載された原始プログラムを実行形式
のプログラムに翻訳するプログラム言語翻訳機に関し、 翻訳処理時間が短く、処理効率の高いプログラム言語翻
訳機の提供を目的とし、 入力原始プログラムを解析し、命令単位の中間コードに
展開するソース解析手段と、各中間コードに対応する命
令列をオブジェクトプログラムとして生成するコード生
成手段と、修正前原始プログラムと修正後原始プログラ
ムとの差分情報を前記ソース解析手段に渡す履歴情報管
理手段と、前記ソース解析手段により生成された修正前
原始プログラムに応じた修正前中間コードの修正箇所に
対応する部分を、前記ソース解析手段にまり生成された
差分情報に応じた差分中間コードに置換えて、前記コー
ド生成手段に渡す置換手段とを具備して構成する。
産業上の利用分野 本発明はプログラム言語で記載された原始(ソース)プ
ログラムを実行形式のプログラムに変換するプログラム
言語翻訳機に関する。
プログラム言語(ソース言語)で記載された原始プログ
ラムを、実在する計算機の上で実行させるためには、そ
の目的計算機が実行できる形式のプログラム(オブジェ
クトプログラム)に、予め変換しておかなければならな
い。このために用いられるのがプログラム言語翻訳機で
あり、このプログラム言語翻訳機は、一般に原始プログ
ラムを文法に従って解析する解析モジュールと、この解
析データから原始プログラムと意味の等価なオブジェク
トコードを生成するコード生成モジュール等からなる。
これらのモジュールはさらにサブモジュールに分解する
ことができ、前段のモジュールの処理結果を一旦、中間
コードとしてファイルに格納し、これを次段の入力とし
て処理する多重パス形式のものがある。
このようなプログラム言語翻訳機においては、例えば数
万行の原始プログラムに対して数行の修正を加えた場合
に、修正を施したプログラム全体を再翻訳する必要があ
るため、時間的ロスが大きく、プログラム作成上の大き
な障害となっている。
このため、このような障害を除去し、効率的な翻訳処理
を実現できるプログラム言語翻訳機の提供が要望されて
いる。
従来の技術 第5図は従来のプログラム言語翻訳機の一例を示すブロ
ック図である。40はプログラマにより作成され、ファ
イルに格納されている原始プログラムであり、この原始
プログラム40は目的計算機で実行可能な形式のプログ
ラムに変換するため翻訳機41に人力される。翻訳機4
1はソース解析部42、最適化処理部43、及びコード
生成部44から構成されている。ソース解析部42はさ
らに字句解析部と構文解析部に分けることができ、字句
解析部では人力された原始プログラム40が名前、定数
、特殊記号等のプログラムの基本構成要素に分けられ、
構文解析部ではこの基本構成要素からプログラムの構造
を決定し、文法に合致するか否かが確かめられ、コード
生成に必要な情報が取り出される。これらの処理を経た
中間コード45はファイルに格納される。
次いで、この中間コード45は最適化処理部43に入力
される。最適化処理部43では、実行時間の短縮化や記
憶領域の縮小化等を目的とした最適化処理がなされ、こ
の結果は中間コード46としてファイルに格納されると
ともに、コード生成部44に入力される。
コード生成部44では、入力された情報に基づいてプロ
グラム中の変数や作業場所に対して実行時の記憶場所が
決定され、構文解析の結果判明したプログラムの意味と
、記憶割当の方針に従って、オブジェクトプログラム4
7を生成し、問題が無ければオブジェクトプログラム4
7をファイルに格納して処理を終了するようになってい
る。
プログラムにバグが発見される等してプログラムの修正
が必要になった場合には、従来はプログラムエディタに
より原始プログラムを修正し、翻訳機41により前回の
処理と同様の処理を再度実施してオブジェクトプログラ
ムを生成していた。
発明が解決しようとする課題 しかし、従来技術によると、例えば、原始プログラムを
数時間を費やして翻訳処理してオブジェクトプログラム
を生成した後、軽微なバグにより数行の修正を加えたよ
うな場合であっても、再度同じ処理を数時間かけて実施
する必要があり、これは非常に効率が悪く、プログラム
作成上の大きな障害となっていた。
本発明はこのような点に鑑みてなされたものであり、翻
訳処理時間が短く、処理効率の高いプログラム言語翻訳
機の提供を目的としている。
課題を解決するための手段 第1図は本発明の詳細な説明するための図であり、本発
明を構成する各手段とこれらの手段間でのデータの流れ
が示されている。同図中、−点鎖線矢印は新規に作成さ
れた原始プログラムに対する翻訳処理を、実線矢印は修
正が加えられた原始プログラムに対する翻訳処理を示し
ている。
本発明のプログラム言語翻訳機は、人力された原始プロ
グラムを解析し、命令単位の中間コードに展開するソー
ス解析手段1と、中間コードに対応する命令列をオブジ
ェクトプログラム2として生成するコード生成手段3と
、修正前原始プログラム4と修正後原始プログラム5と
の差分情報6をソース解析手段1に渡す履歴情報管理手
段7と、ソース解析手段■により生成された修正前原始
プログラム4に応じた修正前中間コード8の修正箇所に
対応する部分を、ソース解析手段1により生成された差
分情報6に応じた差分中間コード9と置換えて修正後中
間コード10とし、これをコード生成手段3に渡す置換
手段11とから構成されている。
作   用 本発明によるプログラム言語翻訳機は、新規に作成され
た原始プログラムに対して翻訳処理(1回目の翻訳処理
)を行うときには、第1図中、点鎖線矢印で示されてい
るように、ソース解析手段1により原始プログラム4全
体についての中間コード8を生成してこれを保存してお
くとともに、コード生成手段3に渡してオブジェクトプ
ログラム2を得る。
バグ対策等により原始プログラムを修正した場合(2回
目以降の翻訳処理)においては、第1図中、実線矢印で
示されているように、履歴情報管理手段7により、修正
前原始プログラム4と修正後原始プログラム5の差分情
報6がソース解析手段1に渡され、1回目(前回〉ソー
ス解析手段lにより生成され保存された修正前中間コー
ド8の修正部分に対応する部分を、この差分情報6に対
応する差分中間コード9と置換手段11により置換える
。この置換えられた中間コード10は、この時点で、修
正後原始プログラム5全体をソース解析手段1で解析し
て生成された中間コードと同一のものとなっている。こ
れをコード生成手段3に渡して、コード生成手段3によ
り修正後原始プログラム5と意味の等価なオブジェクト
プログラム2が生成される。
このように、本プログラム言語翻訳機によれば、原始プ
ログラムが修正変更された場合には、その修正された部
分のみについてソース解析を行い、前回翻訳時に生成さ
れた修正前中間コードの修正箇所に対応する部分をこれ
と置換えるようにしているから、2回目以降の翻訳時に
は原始プログラム全体についてソース解析を実施する必
要が無く、その処理時間を大幅に短縮することができる
実  施  例 以下本発明の実施例を図面に基づいて詳述する。
第2図は本発明の一実施例を説明するためのブロック図
であり、(A)は新規に作成した原始プログラムに対し
ての翻訳処理を、(B)は1回以上の修正を加えた原始
プログラムに対しての翻訳処理を示している。
20はプログラムエディタを有する世代管理システムで
あり、プログラマはこの世代管理システム20のプログ
ラムエディタを用いて原始プログラム21.22を作成
することができる。また、この世代管理システム20は
、バグ対策等のためにプログラムを修正した場合に、履
歴情報管理ファイル23に修正変更した情報等が自動的
に記録されるようになっており、プログラムの履歴を管
理する機能を有している。
本プログラム言語翻訳機は、この世代管理システム20
により作成された原始プログラム21゜22を翻訳処理
するものであり、新規に作成した原始プログラム21と
、これに1回以上の修正を加えた原始プログラム22と
で、その処理内容が異なっている。
まず、新規に作成された原始プログラムに対する処理を
第2図(A)を参照して説明する。世代管理システム2
0のプログラムエディタにより、新規に作成され、ファ
イルに格納されている原始プログラム21は目的計算機
で実行可能なプログラムに変換するために翻訳機24に
入力される。
0 原始プログラム21は、例えば第3図(A)に示される
ように記述されたプログラムである。尚、第3図(A)
中の行番号はこの言語の文法上記述されているものでは
ない。
新規な原始プログラム21に対しての本翻訳機の機能的
な構成は第2図(A)中、点線内に示されているとうり
である。即ち、翻訳機24はソース解析部25、最適化
処理部26、及びコード生成部27から構成されている
。ソース解析部24はさらに字句解析部と構文解析部に
分けることができ、字句解析部では入力された原始プロ
グラム21が名前、定数、特殊記号等のプログラムの基
本構成要素に分けられ、構文解析部ではこの基本構成要
素からプログラムの構造を決定し、文法に合致するか否
かが確かめられ、コード生成に必要な情報が取り出され
る。これらの処理を経た中間コード(ソース解析終了時
の中間コード)28はファイルに格納される。中間コー
ド28は例えば、第3図(B)に示されるような内容の
ものであり、中間コードはテキスト、行番号、辞書、及
び修正情報から構成されている。修正情報は後述する最
適化処理において辞書に変更を生じた場合にその情報を
記録する部分であり、この段階では使用されていない。
次いで、この中間コード28は最適化処理部26に入力
される。この最適化処理部26では、実行時間の短縮化
や記憶領域の縮小化等を目的とした最適化処理がなされ
、この結果は最適化処理終了時の中間コード29として
ファイルに格納され保存される。この中間コード29は
例えば、第3図(C)に示されるような内容のものであ
る。同図(B)と比較して明らかなように、100行目
の辞書(A=B  L@)を削除し、替わって〈A/−
B  L@)を追加するとともに、300行目のLlを
削除することにより最適化が図られている。尚、ソース
解析終了時の中間コード28は最適化処理終了時の中間
コード29のファイル化と前後してファイル上から削除
される。
次いで、この最適化処理終了時の中間コード29は、コ
ード生成部27に渡される。コード生成部27では、中
間コード29の情報に基づいてプログラム中の変数や作
業場所に対して実行時の記憶場所が決定され、構文解析
の結果判明したプログラムの意味と、記憶割当の方針に
従って、オブジェクトプログラム30が生成され、この
オブジェクトプログラム30がファイルに格納されて翻
訳処理が終了する。
次に、第2図(B)を参照して、2回目以降の翻訳処理
について説明する。プログラムにバグが発見される等し
てプログラムの修正が必要になった場合には、世代管理
システム20のプログラムエディタにより前回作成した
新規な原始プログラム21の所定箇所を修正して原始プ
ログラム22を作成する。この原始プログラム22は例
えば、第4図(A)に示されるように記述されたもので
あり、100行目と500行目に修正が加えられている
。この修正を実施したときに、世代管理システム20は
この修正内容を履歴情報として履歴情報管理ファイル2
3に格納している。
そして、この修正後の原始プログラム22の翻3 訳処理を実施するときには、翻訳機24には履歴情報管
理ファイル23に格納されている修正された内容(以下
、差分情報)と、この原始プログラムが新規のものでな
いという情報が入力される。
翻訳機24ではこの原始プログラムが新規のものでない
という情報を受けて以下のような処理を実施する。尚、
各部の処理について第2図(A)を参照して既に説明し
た部分についての説明は一部省略する。
即ち、差分情報はソース解析部24で解析されて差分中
間コード31としてファイルに格納される。差分中間コ
ード31は例えば第4図(B)に示されるような内容で
ある。次いで、この差分中間コード31及び前回の翻訳
処理において作成された中間コード(最適化処理がなさ
れたもの)29が中間言語再生成部32に入力される。
中間言語再生成部32では、前回の翻訳処理で作成され
た最適化終了時の中間コード29 (第3図(C))か
ら、これに含まれている修正情報(最適化処理による修
正情報)を基に最適化処理を実 4− 施する前の中間コード28 (第3図(B)〉を復元す
る。そして、この復元された中間コード28の修正箇所
に対応する部分(100行目と500行目)を、差分中
間コード31(第4図(B〉)に置換えて、これを修正
後中間コード33としてファイルに格納する。この中間
コード33は例えば、第4図(C)に示されるような内
容のものである。第3図(B)と比較して100行目と
500行目が差分中間コード31に置換えられているこ
とがわかる。この時点で、修正後中間コード33は修正
された原始プログラム22全体についてソース解析を実
施した場合と同一の結果となっている。
次いで、修正後中間コード33は最適化処理部26に渡
され、前回翻訳処理時と同様な最適化処理がなされて、
例えば、第4図(D)に示されるような中間コードに変
換された後、コード生成部27に入力され、オブジェク
トプログラム30が生成されて翻訳処理が終了する。
2回以上の修正があった場合には、この2回目の翻訳処
理と同様の処理が繰り返し実行される。
上述したように、本実施例によれば、原始プログラムに
修正が加えられた場合に、このプログラムに対する翻訳
処理においては、原始プログラム全体に対してソース解
析をすることがなく、修正された箇所のみについてソー
ス解析を実施した後、前回翻訳時の中間コードの修正箇
所に対応する部分をこれと置換えるようにしている。こ
れにより、ソース解析に要する処理時間は修正箇所の大
きさに依存することになり、プログラム全体をソース解
析しないから、修正後原始プログラムの翻訳に要する処
理時間が大幅に短縮される。
発明の効果 本発明は以上詳述したように、修正後原始プログラムの
翻訳時には、修正箇所以外の部分についてソース解析を
実施しないように構成したから、ソース解析に要する処
理時間が大幅に短縮され、翻訳処理の効率を大幅に向上
することができるという効果を奏する。
【図面の簡単な説明】
第1図は本発明の原理構成を示すブロック図、第2図(
A)及び(B)は本発明の一実施例を示すブロック図で
あり、(A)は新規に作成した原始プログラムに対して
の翻訳処理を示す図、(B)は修正した原始プログラム
に対しての翻訳処理を示す図である。 第3図(A)〜(C)は新規に作成した原始プログラム
及び1回目の翻訳処理時に出力される中間コードの一例
を示す図、 第4図(A)〜(D)は修正された原始プログラム及び
2回目以降の翻訳処理時に出力される中間コードの一例
を示す図、 第5図は従来技術を示すブロック図である。 ■・・・ソース解析手段、 2・・・オブジェクトプログラム、 3・・・コード生成手段、 4・・・修正前原始プログラム、 5・・・修正後原始プログラム、 7 6・・・差分情報、 7・・・履歴情報管理手段、 8・・・修正前中間コード、 9・・・差分中間コード、 10・・・修正後中間コード、 11・・・置換手段。

Claims (1)

  1. 【特許請求の範囲】 入力原始プログラムを解析し、命令単位の中間コードに
    展開するソース解析手段(1)と、各中間コードに対応
    する命令列をオブジェクトプログラムとして生成するコ
    ード生成手段(3)と、修正前原始プログラム(4)と
    修正後原始プログラム(5)との差分情報(6)を前記
    ソース解析手段(1)に渡す履歴情報管理手段(7)と
    、 前記ソース解析手段(1)により生成された修正前原始
    プログラム(4)に応じた修正前中間コード(8)の修
    正箇所に対応する部分を、前記ソース解析手段(1)に
    より生成された差分情報(6)に応じた差分中間コード
    (9)に置換えて、前記コード生成手段(3)に渡す置
    換手段(11)とを具備してなることを特徴とするプロ
    グラム言語翻訳機。
JP22157389A 1989-08-30 1989-08-30 プログラム言語翻訳機 Pending JPH0385639A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22157389A JPH0385639A (ja) 1989-08-30 1989-08-30 プログラム言語翻訳機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22157389A JPH0385639A (ja) 1989-08-30 1989-08-30 プログラム言語翻訳機

Publications (1)

Publication Number Publication Date
JPH0385639A true JPH0385639A (ja) 1991-04-10

Family

ID=16768854

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22157389A Pending JPH0385639A (ja) 1989-08-30 1989-08-30 プログラム言語翻訳機

Country Status (1)

Country Link
JP (1) JPH0385639A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778085A (ja) * 1993-06-21 1995-03-20 Nec Corp プログラム翻訳処理方式
US6983457B2 (en) 2000-10-25 2006-01-03 Hitachi, Ltd. Compile method for storing source code within object code

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778085A (ja) * 1993-06-21 1995-03-20 Nec Corp プログラム翻訳処理方式
US6983457B2 (en) 2000-10-25 2006-01-03 Hitachi, Ltd. Compile method for storing source code within object code

Similar Documents

Publication Publication Date Title
US5815714A (en) Embedded debug commands in a source file
JPS63201834A (ja) オブジエクト・モジユール生成方法
KR20020070809A (ko) 포스트-링크 코드 최적화
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
JPH0385639A (ja) プログラム言語翻訳機
JPH10187461A (ja) 言語処理方式
JP2000029678A (ja) プログラム言語変換方法、変換装置および記録媒体
JPS5922140A (ja) 対話型コンパイル方式
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JP2002082811A (ja) コンパイル方法および記録媒体
JPH05197561A (ja) コンパイル方式
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP2977642B2 (ja) Fortranコンパイル処理装置
JPH09114655A (ja) 高水準言語レベルでのパッチ作成・運用方式
JPH04248624A (ja) プログラム変換処理装置
JPH103383A (ja) パッチ作成システム
JPH05143356A (ja) コンパイラ装置
JPH03100730A (ja) 高級言語による緊急修正データ作成処理方法
JP2009251684A (ja) ソースプログラムの言語変換装置、方法及びプログラム
JPH08328830A (ja) Sg再翻訳方式
JPH02253443A (ja) プログラム生成方法
JP2001273151A (ja) プログラム実行装置、プログラム実行方法、記録媒体、及び制御プログラム
JPH06290052A (ja) 再コンパイル方式
JPS62166432A (ja) プログラム翻訳制御方式
JPH03269733A (ja) コンパイル装置