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

コンパイル方式

Info

Publication number
JPH07160512A
JPH07160512A JP31143993A JP31143993A JPH07160512A JP H07160512 A JPH07160512 A JP H07160512A JP 31143993 A JP31143993 A JP 31143993A JP 31143993 A JP31143993 A JP 31143993A JP H07160512 A JPH07160512 A JP H07160512A
Authority
JP
Japan
Prior art keywords
data
intermediate data
output
processing
source 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
JP31143993A
Other languages
English (en)
Inventor
Hiroyasu Saikai
弘恭 西海
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP31143993A priority Critical patent/JPH07160512A/ja
Publication of JPH07160512A publication Critical patent/JPH07160512A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】中間データを圧縮してメモリに収納することに
より、高速のコンパイル方式を提供する。 【構成】本発明のコンパイル方式は、構文解析部10
6、最適化部107、コード生成部108およびデータ
圧縮/伸長部109を含み、言語処理機能を有する言語
処理部101と、ソースプログラム・ファイル102
と、中間データ・ファイル103および104と、オブ
ジェクト・ファイル105とを備えて構成されており、
構文解析部106および最適化部107により解析処理
された中間データは、それぞれデータ圧縮/伸長部10
9を介してデータ圧縮されて中間データ・ファイル10
3および104に書き込まれる。これにより、大量の中
間データ出力をこれらのメモリ内に収納することが可能
となり、メモリ上におけるコンパイル方式の高速化を図
ることができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンパイル方式に関す
る。
【0002】
【従来の技術】一般に、従来のコンパイル方式は、図6
に示されるように、構文解析部606、最適化部607
およびコード生成部608を含み、言語処理機能を有す
る言語処理部601と、ソースプログラム・ファイル6
02と、中間データ・ファイル603および604と、
オブジェクト・ファイル605とを備えて構成されてい
る。構文解析部606においては、ソースプログラム・
ファイル602よりソースプログラムを入力し、当該ソ
ースプログラムに対応して言語に対する解析/処理が実
行され、その中間データが中間データ・ファイル603
に出力されて書込まれる。次いで、中間データ・ファイ
ル603より読出された中間データは、最適化部607
に入力されて最適化に関する解析/処理が実行され、そ
の中間データが中間データ・ファイル604に出力され
て書込まれる。そして、最後に、中間データ・ファイル
604より読出された中間データが、コード生成部60
8に入力されて解析/処理が実行され、所定のコードが
生成されてオブジェクト・ファイル605に出力されて
格納される。これらの解析/処理手順における中間デー
タの入出力については、当該中間データは中間ファイル
によるメモリに展開されて行われているが、当該メモリ
がなくなった場合には、ファイルに書き出されているの
が通例である(例えば、NECユーザーズ・マニュアル
CC78KシリーズCコンパイラ操作編)。
【0003】他方、データ圧縮を伴なうコンパイル方式
の公知例としては、特開平2−1025号公報に提案さ
れている方式がある。このコンパイル方式は、予め圧縮
しておいたソースプログラムを入力して処理を行う方法
であり、プログラムを読込む時点において、データの伸
長処理を行うことなく、空白の部分を読み飛ばして高速
処理を実現することを目的としている。
【0004】図7に示すのは、上記特開平2−1025
号公報に提案されている方式におけるソース・プログラ
ムの圧縮形式を示す図である。この圧縮形式において
は、ソースプログラム中に1バイト(8ビット)の制御
コードが設けられており、この制御コードの上位4ビッ
トがスペース(空白)以外の文字数を示し、下位4ビッ
トが、それに続くスペースの文字数を示している。これ
に対応して、本公知例においては、以下の手順により処
理が行われている。
【0005】ステップ1:制御コードを入力する。
【0006】ステップ2:スペース以外の文字数分に応
じて文字を入力する。
【0007】ステップ3:スペースを入力した場合に
は、複数スペースが存在していても1文字とすることに
より高速処理を図る。
【0008】ステップ4:ステップ1に戻り、次の制御
コードを入力して処理を繰返して実行する。
【0009】上記のデータ圧縮方式は、本公知例におい
てのみ適用される特殊な方式であり、一般のデータ圧縮
方式とは異なっている。なお、本公知例においては、従
来技術として、データ圧縮したプログラムを、データ伸
長を行いながら処理するコンパイル方式を挙げている。
【0010】ここで、一般的なデータの圧縮/伸長方式
の従来技術について説明する。データの圧縮/伸長の技
術は、画像処理の分野においても盛んに行われており、
画面情報の冗長性を除くために各種の符号化が提案され
ている。その内の代表的なランレングス符号化法につい
て説明する。
【0011】ランレングス符号化法は、画面上の白領域
を0、黒領域を1と見做し、0および1のそれぞれ連続
した個数(ランレングスと呼ぶ)をカウントして、この
ランレングスを圧縮後のデータとする方法である。その
符号の表現方法としては、0を区切り記号として用いる
方式と、2ビット区切り方式がある。0を区切り記号と
して用いる方式は、ランレングスしか持たないために、
最初のランレングスにより示されるものが0の個数であ
るのか1の個数であるのかを規定しなければならない。
他方、2ビット区切り方式においては、符号化時にラン
レングスに0または1を付加して、0の個数であるのか
1の個数であるのかが区別される。
【0012】言語処理プログラムにおいて扱われるデー
タも、2進数により表現すれば0および1により表現さ
れるため、画像処理の場合と同様の符号化が可能であ
る。以下に、その例を示す。 (1)まず、以下の4バイトの16進数を2進数により
表現する。
【0013】 F F C 0 F F 8 0 1111 1111 1100 0000 1111 1111 1000 0000 (2)これを一連の連続したデータとして、1、0の個
数をカウントすると、1が10個、0が6個、1が9
個、0が7個となる。 (3)1、0の個数を2進数により表現すると以下のよ
うになる。
【0014】 10:1010、6:0110、9:1001、7:0111 (4)次に、ランレングスの符号の2ビット区切り方式
による割当て表(コンピュータ画像処理:安居院 猛、
中嶋正之;産報出版)に従って符号化すると、下記のよ
うに表わされる。
【0015】110110、001010、110101、001011 (5)最後に、連続したデータとして16進数により表
現すると以下のようになる。
【0016】 D 8 A D 4 B 1101 1000 1010 1101 0100 1011 即ち、上記の4バイトのデータが3バイトのデータに圧
縮される。また、データの伸長については、上記の手順
とは逆の手順により行われる。
【0017】
【発明が解決しようとする課題】上述した従来のコンパ
イル方式においては、メモリに展開される中間データ
を、当該メモリにより確保することができなくなった時
点においては、中間データがファイルに書出されるため
に、それ以降における中間データのアクセスが、メモリ
に展開される場合に比較して極めて遅くなるという欠点
がある。
【0018】なお、前記特開平2−1025号公報に提
案されている方式、および当該公知例に記載されている
従来例においては、予めデータ圧縮されたソースプログ
ラムをコンパイルする方式であり、当該ソースプログラ
ムを格納するディスク容量を節約することはできても、
コンパイル時において使用する中間データを格納するメ
モリ容量に関しては何らの救済対策とはならず、依然と
して前述の中間データのアクセスが、メモリに展開され
る場合に比較して極めて遅くなるという欠点がある。
【0019】
【課題を解決するための手段】本発明のコンパイル方式
は、言語処理システムに適用されるコンパイル方式にお
いて、所定のソースプログラム情報を格納するソースプ
ログラム記憶手段と、前記ソースプログラム記憶手段よ
り出力されるソースプログラム情報を入力して、当該ソ
ースプログラム情報の構文を解析/処理して第1の中間
データを出力する構文解析手段と、入力データに対する
データ圧縮機能ならびにデータ伸張機能を有し、前記第
1の中間データを入力してデータ圧縮し、第2の中間デ
ータとして出力するデータ圧縮/伸張手段と、前記デー
タ圧縮/伸張手段より出力される第2の中間データを入
力して格納する第1のデータ記憶手段と、前記第1のデ
ータ記憶手段より出力される第2の中間データを受け
て、前記データ圧縮/伸張手段を介してデータ伸張され
て出力される第3の中間データを入力し、当該第3の中
間データに対する最適化処理を行い、第4の中間データ
として出力する最適化手段と、前記最適化手段より出力
される第4の中間データを受けて、前記データ圧縮/伸
張手段を介してデータ圧縮されて出力される第5の中間
データを入力して格納する第2のデータ記憶手段と、前
記第2のデータ記憶手段より出力される第5の中間デー
タを受けて、前記データ圧縮/伸張手段を介してデータ
伸張されて出力される第6の中間データを入力し、当該
第6の中間データに対する解析/処理を行い、所定の符
号コードを生成して出力するコード生成手段と、前記コ
ード生成手段より出力されるコードを入力して格納する
オブジェクト記憶手段と、を少なくとも備えて構成され
る。
【0020】なお、本発明のコンパイル方式における処
理手順としては、前記ソースプログラム記憶手段より出
力されるソースプログラム情報を入力して逐次構文解析
処理を行い、前記第2の中間データを出力して前記第1
のデータ記憶手段に格納する第1の処理ステップと、前
記第1の処理ステップの終了後に、前記第1のデータ記
憶手段より出力され、データ伸張された前記第3の中間
データを入力して最適化処理を行い、前記第5の中間デ
ータを出力して前記第2のデータ記憶手段に格納する第
2の処理ステップと、前記第2の処理ステップの終了後
に、前記第2のデータ記憶手段より出力され、データ伸
張された前記第6の中間データを入力して解析処理を行
い、前記符号コードを生成して前記オブジェクト記憶手
段に格納する第3の処理ステップとを有することを特徴
としてもよい。
【0021】また、前記ソースプログラム記憶手段より
出力されるソースプログラム情報を、関数単位にて入力
して逐次構文解析処理を行い、前記第2の中間データを
出力して前記第1のデータ記憶手段に格納するととも
に、前記関数単位のソースプログラム情報の終了に伴な
い、次の第2の処理ステップに移行する第1の処理ステ
ップと、前記第1の処理ステップの終了後に、前記第1
のデータ記憶手段より出力され、データ伸張された前記
第3の中間データを入力して最適化処理を行い、前記第
5の中間データを出力して前記第2のデータ記憶手段に
格納する第2の処理ステップと、前記第2の処理ステッ
プの終了後に、前記第2のデータ記憶手段より出力さ
れ、データ伸張された前記第6の中間データを入力して
解析処理を行い、前記符号コードを生成して前記オブジ
ェクト記憶手段に格納する第3の処理ステップとを有す
ることを特徴としてもよい。
【0022】
【実施例】次に、本発明について図面を参照して説明す
る。
【0023】図1は本発明の第1の実施例の構成を示す
システム構成図である。図1に示されるように、本実施
例のコンパイル方式は、構文解析部106、最適化部1
07、コード生成部108およびデータ圧縮/伸長部1
09を含み、言語処理機能を有する言語処理部101
と、ソースプログラム・ファイル102と、中間データ
・メモリ103および104と、オブジェクト・ファイ
ル105とを備えて構成されている。構文解析部106
においては、ソースプログラム・ファイル102よりソ
ースプログラムを入力し、当該ソースプログラムに対応
して言語の構文に関する解析/処理が実行され、その中
間データが出力されてデータ圧縮/伸長部109に入力
される。データ圧縮/伸長部109においては、当該中
間データに対する圧縮処理が行われ、中間データ・メモ
リ103に出力されて書込まれる。次いで、中間データ
・メモリ103より読出された圧縮中間データは、デー
タ圧縮/伸長部109に入力されてデータ伸長され、最
適化部107に入力されて最適化に関する解析/処理が
実行される。最適化部107において処理されて出力さ
れる中間データは、同様にデータ圧縮/伸長部109に
入力されてデータ伸長され、中間データ・メモリ104
に出力されて書込まれる。そして、最後に、中間データ
・メモリ104より読出された中間データは、データ圧
縮/伸長部109に入力されてデータ伸長され、コード
生成部108に入力されてコード生成に関する解析/処
理が実行されて、所定のコードが生成されオブジェクト
・ファイル105に出力されて格納される。
【0024】図2は、本発明の第1の実施例における言
語処理手順を示すフローチャートである。まず、ソース
プログラム・ファイル102におけるデータ終了の有無
が判定され、データ終了でない場合には、ステップ20
2に移行して、構文解析部106に対するソースプログ
ラム102からのデータ入力が行われる。構文解析部1
06においては言語の構文に関する解析/処理が行われ
(ステップ203)、構文解析部106より出力される
中間データは、データ圧縮/伸長部109においてデー
タ圧縮されて、中間データ・メモリ103に出力されて
格納される(ステップ204)。そしてステップ201
に戻り、再度ソースプログラム・ファイル102におけ
るデータ終了の有無が判定され、以下、ステップ202
〜204の処理ステップが繰返して実行されて、ステッ
プ201において、ソースプログラム・ファイル102
におけるデータが終了している場合には、ステップ20
5に移行して、中間メモリ103における中間データの
有無が判定される。ステップ205において中間データ
が存在する場合には、当該中間データ・メモリ103よ
り出力されるデータは、データ圧縮/伸張部109にお
いてデータ伸張されて、最適化部107に入力される
(ステップ206)。次いで、最適化部107において
所定の最適化処理が行われて(ステップ207)、最適
化部107より出力される中間データは、データ圧縮/
伸長部109においてデータ圧縮されて、中間データ・
ファイル104に出力されて格納される(ステップ20
8)。そしてステップ205に戻り、再度中間データ・
メモリ103におけるデータ終了の有無が判定され、以
下、ステップ206〜208の処理ステップが繰返して
実行されて、ステップ205において、中間データ・メ
モリ103におけるデータが終了している場合には、ス
テップ209に移行して、中間データ・メモリ104に
おける中間データ終了の有無が判定される。ステップ2
09において中間データが存在する場合には、当該中間
データ・メモリ104より出力されるデータは、データ
圧縮/伸張部109においてデータ伸張されて、コード
生成部108に入力される(ステップ210)。次い
で、コード生成部108において、コード生成に関する
解析/処理が実行されて所定のコードが生成され(ステ
ップ211)、オブジェクト・ファイル105に出力さ
れて格納される(ステップ212)。そしてステップ2
09に戻り、再度中間データ・メモリ104におけるデ
ータ終了の有無が判定され、以下、ステップ210〜2
12の処理ステップが繰返して実行されて、ステップ2
09において、中間データ・メモリ104におけるデー
タが終了している場合には全ての処理は終了となる。
【0025】なお、図4は、本実施例におけるソースプ
ログラムおよびコンパイル過程を示す説明図である。言
語処理部101に含まれる構文解析部106において
は、ソースプログラム401の解析により、中間イメー
ジ402から中間コードイメージ403が作成される
が、これは図4に示されるように、中間コード404と
して表現される。この中間コード404には、自分自身
および前後の中間コードのアドレス、オペーレーション
の種別および格納先の変数/一時領域のシンボル情報の
アドレス、第1、第2オペランドのシンボル情報のアド
レス、および演算時の参照が直接であるか間接であるか
等を示すモード等が包含されている。
【0026】ここで、図2のフローチャートに従い、図
4のソースプログラムを処理する内容について敷延して
説明する。 (1)ステップ201(図2参照)において、ソースプ
ログラム401の4行目がチェックされて、未だソース
プログラムの終りではないので、処理はステップ202
に移行する。 (2)ステップ202において、ソースプログラム40
1の4行目のソースプログラム情報が入力される。 (3)ステップ203において構文解析処理が行われ、
図4に示される中間イメージ402および中間コードイ
メージ403が作成されて、これにより中間コード40
4が生成される。 (4)ステップ204において中間データの符号化によ
る圧縮が行われ、中間データ・メモリ103に出力され
る。以下に、図4における中間コード405を例とし
て、符号化処理の内容を示す。
【0027】(a)対象の8バイトのデータを2進数に
て表現すると以下のようになる。
【0028】 F F C 0 F F 8 0 F F E 1111 1111 1100 0000 1111 1111 1000 0000 1111 1111 1110 0 0 0 7 E 0000 0000 0000 0111 1110 (b)これを連続したデータとして、1、0の個数をカ
ウントすると、1が10個、0が6個、1が9個、0が
7個、1が11個、0が14個、1が6個、0が1個と
なる。
【0029】(c)上記の1および0の個数を2進数に
て表現すると、以下にようになる。10:1010 、6:0110、
9:1001、7:0111、11:1011 、14:1110 、6:0110、1:0001 (d)次に、ランレングスの符号の2ビット区切り方式
による割当表(コンピュータ画像処理:安居院 猛、中
嶋正之;産報出版)に従って符号化すると、下記のよう
になる。
【0030】110110、001010、110101、001011、11011
1、011010、101110、000001 (e)最後に、連続したデータとして16進数により表
現すると、下記のようになる。
【0031】 D 8 A D 4 B D D A B 8 1101 1000 1010 1101 0100 1011 1101 1101 1010 1011 1000 1 0001 となり、データは6バイトに圧縮される。なお、上記の
説明において利用しているデータの圧縮方式は飽くまで
もその1例に過ぎず、これ以外にも種々の方法があり、
それぞれのデータ圧縮率にも差異があることは云うまで
もない。 (5)次の処理手順としては、ステップ201に戻り、
上記一連の処理が繰返して行われる。 (6)ステップ201においては、ソースプログラム4
01の11行目がチェックされ、ソースプログラムが未
だ終了していないため、ステップ202に移行する。 (7)ステップ202において、ソースプログラム40
1の11行目のソースプログラム情報が構文解析部10
6に入力される。 (8)ステップ203において、構文解析部106によ
る構文解析処理が行われるが、中間イメージ402が存
在しないために、ステップ204においては何の処理も
行われず、そのままステップ201に戻る。 (9)ステップ201においてソースプログラム401
の次の行がチエックされるが、ソースプログラム401
は終了の状態にあるため、ステップ205に移行する。 (10)ステップ205において、中間データ・メモリ
103における中間データの終了の有無がチェックさ
れ、終了ではないのでステップ206に移行する。 (11)ステップ206においては、中間データ・メモ
リ103における中間データが入力される。この処理ス
テップにおいては、上記において説明した、図4におけ
る中間コード405の2番目の4項分(8バイト)に対
して、圧縮された6バイトのデータが入力されたものと
して説明を行う。
【0032】以下の方法によりデータの伸張が行われ
る。
【0033】(a)入力されたデータを連続したデータ
として2進数により表現すると、下記のようになる。
【0034】 D 8 A D 4 B D D A B 8 1101 1000 1010 1101 0100 1011 1101 1101 1010 1011 1000 1 0001 (b)ランレングスの符号の割当表に従って解析する
と、以下のようになる。
【0035】110110、001010、110101、001011、11011
1、011010、101110、000001 (c)これより、ランレングス数は以下のようになる。 10:1010、6:0110、9:1001、7:0111、11:1011 、14:1110
、6:0110、1:0001 (d)これが、1、0の個数に対応しているために、1
が10個、0が6個、1が9個、0が7個、1が11
個、0が14個、1が6個、0が1個となる。
【0036】(e)最後に、1、0を個数分並べて16
進数により表現すると、以下のようになり、元の8バイ
トが復元される。
【0037】 1111 1111 1100 0000 1111 1111 1000 0000 1111 1111 1110 F F C 0 F F 8 0 F F E 0000 0000 0000 0111 1110 0 0 0 7 E (12)次に、ステップ207において、最適化処理が
実行されるが、本列においては、何も行われない。 (13)ステップ208においては、前記ステップ20
4の場合と同様に、中間データの符号化による圧縮が行
われて、中間データ・メモリ104に出力される。 (14)ステップ205に戻り、中間データ・メモリ1
03に中間データが存在する間においては上記の処理が
繰返して行われ、終了後においては、ステップ209に
移行する。 (15)ステップ209においては、前記ステップ20
5の場合と同様に、中間データ・メモリ104において
中間データが存在するか否かが判断される。 (16)次いで、ステップ210においては、前記ステ
ップ206の場合と同様に、中間データのデータ伸張処
理が行われる。 (17)ステップ211において、コード生成部108
において中間データに対応するコードが生成される。 (18)ステップ212においては、ステップ211に
おいて生成された前記コードは、オブジェクト・ファイ
ル105に出力される。 (19)次いでステップ209に戻り、上記の一連の処
理が、中間データ・メモリ104における中間データが
終了するまで、繰返して実行される。 (20)ステップ209において、中間データ・メモリ
104における中間データが終了した時点において、全
体の処理が終了する。
【0038】次に、本発明の第2の実施例について説明
する。本実施例のシステム構成は、前述の第1の実施例
と同様であるが、処理手順の内容において差異がある。
即ち、第1の実施例においては、ソースプログラム・フ
ァイル102の全内容が、構文解析部106において解
析されて出力されているため、中間データを圧縮したも
のとしても、なお使用されるメモリ容量が不足する可能
性/場合がある。本実施例においては、ソースプログラ
ム情報を関数単位において中間データとすることによ
り、第1の実施例の場合よりも更にメモリのみによる処
理を行うことが可能となり、中間データのアクセスが促
進されるという利点がある。
【0039】図1は第1の実施例の場合と同様に、本実
施例の構成をも示すシステム構成図であり、本実施例の
コンパイル方式は、構文解析部106、最適化部10
7、コード生成部108およびデータ圧縮/伸長部10
9を含み、言語処理機能を有する言語処理部101と、
ソースプログラム・ファイル102と、中間データ・メ
モリ103および104と、オブジェクト・ファイル1
05とを備えて構成される。構文解析部106において
は、ソースプログラム・ファイル102よりソースプロ
グラムを入力し、当該ソースプログラムに対応して言語
の構文に関する解析/処理が実行され、中間データが出
力されてデータ圧縮/伸長部109に入力される。デー
タ圧縮/伸長部109においては、当該中間データに対
するデータ圧縮処理が行われ、中間データ・メモリ10
3に出力されて書込まれる。次いで、中間データ・メモ
リ103より読出された圧縮中間データは、データ圧縮
/伸長部109に入力されてデータ伸長され、最適化部
107に入力されて最適化に関する解析/処理が実行さ
れる。、最適化部107において処理されて出力される
中間データは、同様にデータ圧縮/伸長部109に入力
されてデータ伸長され、中間データ・メモリ104に出
力されて書込まれる。そして、最後に、中間データ・メ
モリ104より読出された中間データは、データ圧縮/
伸長部109に入力されてデータ伸長され、コード生成
部108に入力されてコード生成に関する解析/処理が
実行されて、所定のコードが生成されオブジェクト・フ
ァイル105に出力されて格納される。
【0040】図3は、本実施例における言語処理手順を
示すフローチャートである。まず、ステップ301にお
いて、ソースプログラム・ファイル102におけるデー
タが終了しているか否かが判断され、当該データが終了
していない場合には、ステップ302に移行して、構文
解析部106に対するソースプログラム102からのデ
ータ入力が行われる。次いで、ステップ303におい
て、構文解析部106に入力されたソースプログラム情
報が、関数の終りであるか否かが判断されて、関数の終
りでない場合には、ステップ304において、当該ソー
スプログラム情報が構文解析部106において解析/処
理され、中間データが生成される。ステップ305にお
いては、構文解析部106より出力された中間データ
は、データ圧縮/伸長部109においてデータ圧縮され
て、中間データ・メモリ103に出力されて格納され
る。そしてステップ301に戻り、再度ソースプログラ
ム・ファイル102におけるデータが終了しているか否
かが判断され、当該データが存在する場合には、ステッ
プ201に戻り、ステップ302〜305の処理ステッ
プが繰返して実行される。そして、ステップ201にお
いて、ソースプログラム・ファイル102におけるデー
タが全て終了している場合には、本処理は全て終了とな
る。
【0041】また、ステップ303において、構文解析
部106に入力されたソースプログラム情報が、関数の
終りであると判断される場合には、ステップ306に移
行して、中間データ・メモリ103における中間データ
が終りであるか否かが判断される。ステップ306にお
いて、中間データ・メモリ103における中間データが
終りでない場合には、ステップ307において、当該中
間データ・メモリ103より出力されるデータは、デー
タ圧縮/伸張部109においてデータ伸張されて、最適
化部107に入力される。次いで、ステップ308にお
いて、最適化部107において所定の最適化処理が行わ
れて出力され、ステップ309において、最適化部10
7より出力される中間データは、データ圧縮/伸長部1
09においてデータ圧縮されて、中間データ・メモリ1
04に出力されて格納される。そしてステップ306に
戻り、再度中間データ・メモリ103における中間デー
タが終りでないか否かが判断されて、当該中間データが
終りではない場合には、ステップ307〜309の処理
ステップが繰返して実行され、また、ステップ306に
おいて、中間データ・メモリ103におけるデータが終
了している場合には、ステップ310に移行して、中間
データ・メモリ104における中間データが終了してい
るか否かが判断される。ステップ310において、当該
中間データが終りではない場合には、ステップ311に
おいて、中間データ・メモリ104より出力される中間
データは、データ圧縮/伸張部109においてデータ伸
張されて、コード生成部108に入力される。次いで、
ステップ312において、コード生成部108におい
て、コード生成に関する解析/処理が実行されて所定の
コードが生成され、ステップ313においてオブジェク
ト・ファイル105に出力されて格納される。そしてス
テップ310に戻り、再度中間データ・メモリ104に
おけるデータが終りでないか否かが判断されて、当該中
間データが終りではない場合には、ステップ311〜3
13の処理ステップが繰返して実行され、また、ステッ
プ310において、中間データ・メモリ104における
データが終了している場合には、ステップ301に戻
り、再度一連の処理が最初から開始される。そして、上
記の処理手順が関数単位で繰返して実行され、ステップ
301において、ソースプログラム・ファイル102に
おけるソースプログラム情報の終了が検出された時点に
おいて、全ての処理が終了する。
【0042】図4は、第1の実施例の場合と同様に、本
実施例におけるソースプログラムおよびコンパイル過程
を示す説明図である。言語処理部101に含まれる構文
解析部106においては、ソースプログラム401の解
析により、中間イメージ402から中間コードイメージ
403が作成されるが、これは図4に示されるように、
中間コード404として表現される。この中間コード4
04には、自分自身および前後の中間コードのアドレ
ス、オペーレーションの種別および格納先の変数/一時
領域のシンボル情報のアドレス、第1、第2オペランド
のシンボル情報のアドレス、および演算時の参照が直接
であるか間接であるか等を示すモード等が包含されてい
る。
【0043】ここで、図3のフローチャートに従い、図
4のソースプログラム401を処理する内容について敷
延して説明する。 (1)ステップ301(図3参照)において、ソースプ
ログラム401の4行目がチェックされて、未だソース
プログラム401の終りではないので、処理はステップ
302に移行する。 (2)ステップ302において、ソースプログラム40
1の4行目のソースプログラム情報が入力される。 (3)ステップ303において、ステップ302におい
て入力されたソースプログラム情報がチェックされ、関
数の終りではないので、処理はステップ304に移行す
る。 (4)ステップ304において構文解析処理が行われ、
図4に示される中間イメージ402および中間コードイ
メージ403が作成されて、これにより中間コード40
4が生成される。 (5)ステップ305において中間データの符号化によ
るデータ圧縮が行われ、中間データ・メモリ103に出
力される。この符号化の方法は、第1の実施例の場合と
同様であるので説明は省略する。 (6)次の処理手順としては、ステップ302に戻り、
ソースプログラム401の5行目のソースプログラム情
報が入力される。 (7)ステップ303においては、ステップ302にお
いて入力されたソースプログラム情報がチェックされ、
関数の終りであるので、処理はステップ306に移行す
る。 (8)ステップ306においては、ステップ305にお
いて出力された中間データ・メモリ103の中間データ
が終りであるか否かが判断されて、終りではないので処
理はステップ307に移行する。 (9)ステップ307において、中間データ・メモリ1
03における中間データが入力される。この処理ステッ
プにおけるデータ伸張方式は、前記第1の実施例の場合
と同様であるので、その説明は省略する。 (10)ステップ308においては、最適化部107に
おいて最適化処理が行われる。 (11)ステップ309においては、ステップ305の
場合と同様に中間データの符号化によるデータ圧縮が行
われ、中間データ・メモリ104に出力される。 (12)処理はステップ306に戻り、中間データ・メ
モリ103に中間データが存在する間上記の処理が繰返
して行われ、当該中間データの終了する時点において、
処理はステップ310に移行する。 (13)次に、ステップ310においては、ステップ3
06の場合と同様に、中間データ・メモリ103の中間
データが終りであるか否かが判断される。 (14)ステップ311においては、ステップ307の
場合と同様に、中間データ・メモリ104の中間データ
がデータ伸張されて、コード生成部108に入力され
る。 (15)ステップ312においては、コード生成部10
8に入力された中間データに応じたコードが生成されて
出力される。 (16)ステップ313においては、ステップ312に
おいて生成されたコードは、オブジェクト・ファイル1
05に出力されて格納される。 (17)次いで、処理はステップ310に戻り、中間デ
ータ・メモリ104の中間データが終了するまで、繰返
して行われる。 (18)中間データが終了した時点において、処理はス
テップ301に戻る。 (19)上記の処理が関数単位で繰返して実行され、ス
テップ301において、ソースプログラム情報の終了が
検出された時点において、全ての処理が終了する。
【0044】なお、図5に示されるのは、本発明による
場合(メモリアクセス)と、従来例による場合(ファイ
ルアクセス)における、中間コードサイズに対応する処
理時間を比較対象としてとり、言語処理システムの処理
性能比較として示したグラフであるが、本図より明らか
なように、本発明においては、中間データのデータ圧縮
によりメモリアクセスが可能となり、従来例に対比して
コンパイル処理時間が短縮される。
【0045】
【発明の効果】以上説明したように、本発明は、言語処
理システムにおける構文解析処理ならびに最適化処理に
対応して出力される中間データを、所定の方式を介して
データ圧縮してメモリに出力することにより、従来に比
較して、相対的に大量の中間コードを当該メモリ内に収
納することが可能となり、これにより、メモリ上におけ
る高速のコンパイル方式を提供することができるという
効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例のシステム構成を示す図であ
る。
【図2】本発明の第1の実施例における言語処理システ
ムの処理手順を示すフローチャートである。
【図3】本発明の第2の実施例における言語処理システ
ムの処理手順を示すフローチャートである。
【図4】ソースプログラムおよびコンパイル過程を示す
図である。
【図5】言語処理システムの処理性能を示す図である。
【図6】従来例のシステム構成を示す図である。
【図7】ソースプログラムのデータ圧縮形式例を示す図
である。
【符号の説明】
101、601 言語処理部 102、602 ソースプログラム・ファイル 103、104 中間データ・メモリ 105、605 オブジェクト・ファイル 106、606 構文解析部 107、607 最適化部 108、608 コード生成部 401 ソースプログラム 402 中間イメージ 403 中間コードイメージ 404、405 中間コード 603、604 中間データ・ファイル

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 言語処理システムに適用されるコンパイ
    ル方式において、 所定のソースプログラム情報を格納するソースプログラ
    ム記憶手段と、 前記ソースプログラム記憶手段より出力されるソースプ
    ログラム情報を入力して、当該ソースプログラム情報の
    構文を解析/処理して第1の中間データを出力する構文
    解析手段と、 入力データに対するデータ圧縮機能ならびにデータ伸張
    機能を有し、前記第1の中間データを入力してデータ圧
    縮し、第2の中間データとして出力するデータ圧縮/伸
    張手段と、 前記データ圧縮/伸張手段より出力される第2の中間デ
    ータを入力して格納する第1のデータ記憶手段と、 前記第1のデータ記憶手段より出力される第2の中間デ
    ータを受けて、前記データ圧縮/伸張手段を介してデー
    タ伸張されて出力される第3の中間データを入力し、当
    該第3の中間データに対する最適化処理を行い、第4の
    中間データとして出力する最適化手段と、 前記最適化手段より出力される第4の中間データを受け
    て、前記データ圧縮/伸張手段を介してデータ圧縮され
    て出力される第5の中間データを入力して格納する第2
    のデータ記憶手段と、 前記第2のデータ記憶手段より出力される第5の中間デ
    ータを受けて、前記データ圧縮/伸張手段を介してデー
    タ伸張されて出力される第6の中間データを入力し、当
    該第6の中間データに対する解析/処理を行い、所定の
    符号コードを生成して出力するコード生成手段と、 前記コード生成手段より出力されるコードを入力して格
    納するオブジェクト記憶手段と、 を少なくとも備えることを特徴とするコンパイル方式。
  2. 【請求項2】 言語処理システムに適用されるコンパイ
    ル方式において、 前記ソースプログラム記憶手段より出力されるソースプ
    ログラム情報を入力して逐次構文解析処理を行い、前記
    第2の中間データを出力して前記第1のデータ記憶手段
    に格納する第1の処理ステップと、 前記第1の処理ステップの終了後に、前記第1のデータ
    記憶手段より出力され、データ伸張された前記第3の中
    間データを入力して最適化処理を行い、前記第5の中間
    データを出力して前記第2のデータ記憶手段に格納する
    第2の処理ステップと、 前記第2の処理ステップの終了後に、前記第2のデータ
    記憶手段より出力され、データ伸張された前記第6の中
    間データを入力して解析処理を行い、前記符号コードを
    生成して前記オブジェクト記憶手段に格納する第3の処
    理ステップと、 を処理方法として有することを特徴とする請求項1記載
    のコンパイル方式。
  3. 【請求項3】 言語処理システムに適用されるコンパイ
    ル方式において、 前記ソースプログラム記憶手段より出力されるソースプ
    ログラム情報を、関数単位にて入力して逐次構文解析処
    理を行い、前記第2の中間データを出力して前記第1の
    データ記憶手段に格納するとともに、前記関数単位のソ
    ースプログラム情報の終了に伴ない、次の第2の処理ス
    テップに移行する第1の処理ステップと、 前記第1の処理ステップの終了後に、前記第1のデータ
    記憶手段より出力され、データ伸張された前記第3の中
    間データを入力して最適化処理を行い、前記第5の中間
    データを出力して前記第2のデータ記憶手段に格納する
    第2の処理ステップと、 前記第2の処理ステップの終了後に、前記第2のデータ
    記憶手段より出力され、データ伸張された前記第6の中
    間データを入力して解析処理を行い、前記符号コードを
    生成して前記オブジェクト記憶手段に格納する第3の処
    理ステップと、 を処理方法として有することを特徴とする請求項1記載
    のコンパイル方式。
JP31143993A 1993-12-13 1993-12-13 コンパイル方式 Pending JPH07160512A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31143993A JPH07160512A (ja) 1993-12-13 1993-12-13 コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31143993A JPH07160512A (ja) 1993-12-13 1993-12-13 コンパイル方式

Publications (1)

Publication Number Publication Date
JPH07160512A true JPH07160512A (ja) 1995-06-23

Family

ID=18017233

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31143993A Pending JPH07160512A (ja) 1993-12-13 1993-12-13 コンパイル方式

Country Status (1)

Country Link
JP (1) JPH07160512A (ja)

Similar Documents

Publication Publication Date Title
EP0293161B1 (en) Character processing system with spelling check function
US6876774B2 (en) Method and apparatus for compressing data string
US5956510A (en) Apparatus and method for revising computer program code
JP2002529849A (ja) データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム
EP0965171A2 (en) Data coding network
EP1717719A1 (en) Application conversion of source data
KR0147355B1 (ko) 그래픽 영상 데이타 압축 방법
US5964861A (en) Method for writing a program to control processors using any instructions selected from original instructions and defining the instructions used as a new instruction set
US5832507A (en) Method and apparatus for converting ASCII path names to parsed path name structures
KR20130111170A (ko) 압축 및 신장 시스템, 압축 장치, 신장 장치, 압축 및 신장 방법, 압축 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체, 및 신장 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP2000201080A (ja) 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
US8463759B2 (en) Method and system for compressing data
US6226411B1 (en) Method for data compression and restoration
JPH07160512A (ja) コンパイル方式
JP3267550B2 (ja) デグレードチェック装置
US6086632A (en) Register optimizing compiler using commutative operations
JPWO2005101210A1 (ja) データ解析装置およびデータ解析プログラム
JPH06290021A (ja) ソースプログラム圧縮方法
US6373409B1 (en) Method and computer program product for implementing text conversion table compression
JP3279706B2 (ja) オンライン・コンパイル方式
JP3104302B2 (ja) データ圧縮装置
JP3988973B2 (ja) 文字列データ圧縮装置、文字列データ圧縮方法および記憶媒体
JP3018579B2 (ja) 名前検索処理装置
JPH06337762A (ja) データベースレコードの圧縮方法および復元方法
EP0313973A2 (en) A method for LR (left-right) table compression

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19960917