JPH0259823A - コンパイル処理方式 - Google Patents

コンパイル処理方式

Info

Publication number
JPH0259823A
JPH0259823A JP21136788A JP21136788A JPH0259823A JP H0259823 A JPH0259823 A JP H0259823A JP 21136788 A JP21136788 A JP 21136788A JP 21136788 A JP21136788 A JP 21136788A JP H0259823 A JPH0259823 A JP H0259823A
Authority
JP
Japan
Prior art keywords
analysis
instruction
basic
unit
instructions
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
JP21136788A
Other languages
English (en)
Inventor
Kazuhiko Noba
和彦 野場
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 JP21136788A priority Critical patent/JPH0259823A/ja
Publication of JPH0259823A publication Critical patent/JPH0259823A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 原始プログラム若しくは中間コードを、構文意味解析し
て対応する中間コードへとコンパイルするためのコンパ
イル処理方式に関し、 構文意味解析を効率的に実現できるようにすることを目
的とし、 原始プログラム等の処理対象プログラムの解析処理の制
御を実行する解析制御部と、この解析制御部から呼び出
されて、処理対象プログラムに記述される所定の基本命
令の構文意味解析を実行する基本命令解析部と、解析制
御部から呼び出されて、処理対象プログラムに記述され
る所定の応用命令を対応する等価な基本命令の組み合わ
せに変換する命令変換部と、命令変換部により変換され
た基本命令の組み合わせを格納するバッファ領域と、命
令変換部が変換処理を終了したときに、基本命令解析部
を呼び出す解析呼出部とを備え、解析呼出部により呼び
出された基本命令解析部が、バッファ領域に格納される
基本命令の組み合わせの構文意味解析を実行するよう処
理することで、基本命令と応用命令の構文意味解析を同
一のフェーズで実現するよう構成する。
〔産業上の利用分野] 本発明は、原始プログラム若しくは初期解析が終了した
中間コードを、構文解析し意味解析して、対応する中間
コードへとコンパイルするためのコンパイル処理方式に
関し、特に、1パスで構文解析及び意味解析(以下、構
文意味解析ということがある)を実行するよう構成する
ときにあって、その構文意味解析を効率的に実現できる
ようにするコンパイル処理方式に関するものである。
近年、コボル言語のような大規模システム用の言語が、
パソコン等の小規模システムに搭載されるようになって
きている。しかるに、小規模システムにおいては、メモ
リ資源やディスク資源等の性能の制約があることから、
コンパイル処理にあってもパス数を増やすことができな
いという現状がある。これから、少ないパス数を採用し
ながら、なおかつ効率的な構文意味解析を実行できるコ
ンパイル処理方式の提供が望まれている。
〔従来の技術〕
例えば、コボルのEVALUATE命令は、IF命令の
組み合わせで等価的に表現できることになる。これから
、複数のパスを持てるコンパイラにおいては、第11図
に示すように、構文解析の1つのバスを使って中間コー
ドAから中間コードBを生成する際に、EVALUAT
E命令の中間コードをIF命令の中間コードに変換する
よう構成し、それから以降のコンパイル処理に関しては
、共通のIF命令の解析プログラムに従ってコンパイル
処理を行えるようにと構成していた。
一方、構文解析と意味解析とを同時のパスで行うような
少ないパス数のコンパイラにおいては、EVALUAT
E命令とIF命令の解析を共通の解析プログラムで構成
できないために、第12図に示すように、それぞれの命
令単位をもって構文意味解析の処理を行っていたのであ
る。
〔発明が解決しようとする課題〕
しかしながら、前者の従来技術では、単純な命令の組み
合わせとなるEVALUATE命令のような複雑な命令
の解析については、単純な命令への変換処理を実行する
パスだけで行えばよいことから、コンパイル処理が単純
になるという利点があるものの、パス数が増えることか
ら、コンパイル処理に時間がかかるという問題点がでて
くることになる。そして、コンパイラのプログラムサイ
ズが大きくなってしまい、パソコン等の小規模システム
には適さないという欠点があった。
一方、後者の従来技術では、パス数を増加させないこと
から、パス数の増加に伴うコンパイル処理時間の増加や
プログラムサイズの増加はないという利点があるものの
、複雑な命令の構文意味解析処理を単純化できないとい
う問題点があるとともに、生成された中間コードが同じ
形式の中間コードであるにもかかわらず、別々に持たな
くてはならないことから、コンパイラのプログラムサイ
ズをそれほど小さくできないという欠点もあったのであ
る。
本発明はかかる事情に鑑みてなされたものであって、l
バスで構文意味解析を実行するよう構成するコンパイラ
にあって、その構文意味解析を効率的に実現できるよう
にするコンパイル処理方式の提供を目的とするものであ
る。
〔課題を解決するための手段〕
第1図は本発明の原理構成図である。
図中、1は本発明に係るコンパイラであって、コンパイ
ル処理対象となる処理対象プログラムを読み込んで、構
文解析し意味解析して対応する中間コードを生成するよ
う処理するもの、10は処理対象プログラムファイルで
あって、処理対象プログラムとなる原始プログラム若し
くは初期解析が終了した中間コードを格納するもの、2
0は中間コードファイルであって、コンパイラlにより
生成された中間コードを格納するものである。
コンパイラlは、処理対象プログラムの構文意味解析の
実行のために、解析制御部30、基本命令解析部40及
び応用命令解析部50を備える。
この解析制御部30は、処理対象プログラム中の基本命
令を検出したときに、基本命令解析部40を呼び出すよ
う処理する基本命令解析呼出部31と、処理対象プログ
ラム中の応用命令を検出したときに、応用命令解析部5
0を呼び出すよう処理する応用命令解析呼出部32とを
備えることで、処理対象プログラムの解析処理の制御を
実行し、基本命令解析部40は、基本命令解析呼出部3
1から呼び出されて、処理対象プログラムに記述される
所定の基本命令の構文意味解析を実行し、応用命令解析
部50は、応用命令解析呼出部32から呼び出されて、
処理対象プログラムに記述される所定の応用命令を対応
する等価な基本命令の組み合わせに変換するよう処理す
る命令変換部51と、この命令変換部51が変換処理を
終了したときに、基本命令解析部40を呼び出すよう処
理する解析呼出部52とを備えることで、処理対象プロ
グラムに記述される所定の応用命令の構文意味解析を実
行する。60はバッファ領域であって、命令変換部51
により変換された基本命令の組み合わせを格納するもの
である。
[作用] 本発明では、処理対象プログラム中に応用命令があると
、応用命令解析呼出部32が命令変換部51を呼び出し
、この呼び出された命令変換部5■は、応用命令を対応
する等価な基本命令の組み合わせに変換するとともに、
求められた基本命令の組み合わせをバッファ領域60に
格納するよう処理する。そして、命令変換部51が変換
処理を終了すると、解析呼出部52が基本命令解析部4
0を呼び出し、この呼び出された基本命令解析部40は
、バッファ領域60に格納される等価な基本命令の組み
合わせの構文意味解析を実行するよう処理する。
このように、本発明によれば、応用命令の構文意味解析
が、基本命令の構文意味解析と同一のフェーズで実現さ
れることになるとともに、基本命令の構文意味解析処理
を利用して実現されることになる。従って、パス数を増
加させず、かつ効率的に処理対象プログラムのコンパイ
ルを実行できることになる。
〔実施例〕
以下、コボルコンパイラに適用した実施例に従って本発
明の詳細な説明する。
第2図に、本発明が適用されるコボルコンパイラのパス
構成を示す。この図に示すように、本発明が適用される
コボルコンパイラは、第1のパスで字句解析の終了した
原始プログラム2を読み込み、初期解析を実行すること
で第1の中間コード3を生成し、続く第2のパスでこの
第1の中間コード3を読み込み、構文意味解析を実行す
ることで第2の中間コード4を生成し、次の第3のパス
でこの第2の中間コード4を読み込み、目的プログラム
の生成処理を実行することで目的プログラム5を生成す
るよう構成するものである。
本発明は、単純な命令へと分解できる複雑な命令の構文
意味解析を、単純な命令の構文意味解析フェーズで効率
的に実行できるようにすることを企図するものである。
これから、コボルで記述された原始プログラム中の「手
続き部」の構文意味解析フェーズに適用されるものであ
る。従って、原始プログラム中の「見出し部」、「環境
部」及び「データ部」の構文意味解析については、必ず
しも第2のパスで実行される必要はない。例えば、原始
プログラム中の「見出し部」、「環境部」及び「データ
部」の構文意味解析については、第1のパスの初期解析
フェーズで実行し、また、「手続き部」の語単位の分解
や利用昔語解釈等についても第1のパスの初期解析フェ
ーズで実行するという構成を採ることも可能である。
第3図に、上述の第2のパスによって実行されることに
なる本発明に特徴的な構文意味解析処理の実施例構成を
示す。この実施例では、IF命令へと分解できるEVA
LUATE命令を例にして、本発明の構文意味解析処理
の処理内容を開示しである。
図中、第1図及び第2図で示したものと同じものについ
ては同一の記号で示しており、40aは第1図の基本命
令解析部40に相当するIF命令解析部、50aは第1
図の応用命令解析部50に相当するEVALUATE命
令解析部である。このIF命令解析部40aは、IF命
令で記述されたプログラムステップの構文意味解析を実
行する解析プログラムで構成されることになる。一方、
EVALUATE命令解析部50aには、構文意味解析
を実行するための解析プログラムは含まれておらず、E
VALUATE命令を等価なIF命令へと変換するEV
ALUATE・IF命令変換部51aにより構成される
ことになる。
次に、第1の中間コード3に含まれるEVALUATE
命令の中間コードとIF命令の中間コードに対しての構
文意味解析処理について具体的に説明する。
構文意味解析処理を制御する解析制御部30は、読み込
んだ第1の中間コード3中にEVALUATE命令の中
間コードを検出したときには、第3図にも示すように、
CALL命令に従って、EVALUATE命令解析部5
0aを呼び出すよう処理することになる。そして、この
ようにして呼び出されたEVALUATE命令解析部5
0aは、EVALUATE −I F命令変換部51a
を使って、最初に、解析制御部30が検出したEVAL
UATE命令の中間コードを等価なIF命令の中間コー
ドへと変換する。例えば、 というプログラムは、 というIP命令の組み合わせと等価なので、EVALU
ATE命令解析部5oaは、第4図に示すような変換処
理を実行するのである。
第5図及び第6図に、他の等価な関係をなすEVALU
ATE命令とIF命令の対を例示する。
このような等価なものへの変換処理は、EVALUAT
E命令の文法規則に従って簡単に実行できることになる
。例えば、上述の変換処理例では、EvALUATE命
令中(7)”ALSO”がIF命令の°’ A N D
 ”に対応するということで、“’ALSO°゛を検出
したときに“AND”を生成する処理を行うことで実行
されることになる。同様に、第5図の例では、2つの°
’WHEN’が連続したことで“°OR′″を生成し、
第6図の例では、2つの°“W HE N”の並び方か
ら“ELSE  IF”を生成することで実行される。
等価なIF命令への変換処理を実行すると、EVALU
ATE命令解析部50aは、変換処理により求められた
IF命令の中間コードをバッファ領域60に格納する。
続いて、第3図にも示すように、CALL命令に従って
、IF命令解析部40aを呼び出すよう処理する。この
ようにして呼び出されるTF命令解析部40aは、IF
命令用の構文意味解析の解析プログラムを使い、バッフ
ァ領域60に格納されたIF命令によって表されるとこ
ろの中間コードの構文意味解析を実行する。
この処理により、EVALUATE命令の中間コードの
構文意味解析が実行されることになるのである。最後に
、バッファ領域60に格納された中間コードの構文意味
解析を終了すると、IF命令解析部40aは、プログラ
ムの制御をEVALUATE命令解析部50aに戻すこ
とになる。
一方、解析制御部30は、読み込んだ第1の中間コード
3中にIF命令の中間コードを検出したときには、第3
図にも示すように、CALL命令に従って、直接、IF
命令解析部40aを呼び出すよう処理する。そして、こ
のようにして呼び出されたIF命令解析部40aは、読
み込んだIP命令の中間コードの構文意味解析を実行す
ることになる。すなわち、IF命令の中間コードの構文
意味解析に関しては、従来の考え方と変わることな(実
行されることになる。
このように、本発明では、複雑な命令の構文意味解析を
、■バス上で単純な命令の解析プログラムを使って実現
するよう処理するのである。
第7図ないし第10図に、EVALUATE命令の選択
主体と選択対象の中間コードへの変換アルゴリズムを示
す。上述した、 EVALUATE  A  ALSOB=IWHEN 
 CALSOTRUE というプログラム例で説明するならば、選択対象の°“
C″はデータ名であることから、第7図のフローチャー
トを実行することで「処理5Jに進み、第1O図中のス
テップ54ないしステップ59の処理により、選択主体
のA°゛を使って、(A=C) という中間コードが求められることになる。同様に、選
択対象の’TRUE”は第7図のフローチャートを実行
することで「処理2」に進み、第8図中のステップ21
ないしステップ24の処理により、選択主体の“B=1
”を使って、(B=1) という中間コードが求められることになる。
以上、図示実施例について説明したが、本発明はこれに
限定されるものではない。例えば、コボルコンパイラに
限られるものではなく、他の高級言語のコンパイラであ
ってもよい。またコボルコンパイラに適用するときにあ
っても、EVALUATE命令に限られるものではない
。また、構文意味解析の処理対象は中間コードに限られ
るものではなく、原始プログラムであってもよい。そし
て、処理対象となる中間コードの解析レヘルは様々なも
のを含むのである。
〔発明の効果〕
以上のように、本発明によれば、複雑な命令の構文意味
解析が、単純な命令の構文意味解析と同一のフェーズで
、極めて簡単に実行されることになるとともに、解析プ
ログラムを共用するのでコンパイラのプログラムサイズ
を小さくできることになる。そして、パス数も増加させ
る必要がないことから、コンパイル処理も高速で実現で
きることになる。従って、パソコンのような小規模シス
テムのコンパイラに好適なものとなる。
【図面の簡単な説明】
第1図は本発明の原理構成図、 第2図は本発明が適用されるコボルコンパイラのバス構
成の説明図、 第3図は本発明の実施例構成図、 第4図はEVALUATE命令の変換処理の説明図、 第5図及び第6図は等価な関係にあるEVALUATE
命令とIF命令の説明図、 第7図は選択主体及び選択対象の変換処理のフローチャ
ート、 第8図は第7図の処理2及び処理3の詳細なフローチャ
ート、 第9図は第7図の処理4の詳細なフローチャート、 第10図は第7図の処理5の詳細なフローチャート、 第11図及び第12図は従来技術の説明図である。 図中、lはコンパイラ、2は原始プログラム、3は第1
の中間コード、4は第2の中間コード、5は目的プログ
ラム、10は処理対象プログラムファイル、20は中間
コードファイル、30は解析制御部、31は基本命令解
析呼出部、32は応用命令解析呼出部、40は基本命令
解析部、40aはIF命令解析部、50は応用命令解析
部、50aはEVALUATE命令解析部、51は命令
変換部、 51aはEVALUATE− IP命令変 換部、 52は解析呼出部、 60はバッファ領域で ある。

Claims (1)

  1. 【特許請求の範囲】 原始プログラム若しくは初期解析が終了した中間コード
    の処理対象プログラムを、構文解析し意味解析して、対
    応する中間コードへとコンパイルするためのコンパイル
    処理方式において、 処理対象プログラムの解析処理の制御を実行する解析制
    御部(30)と、 上記解析制御部(30)から呼び出されて、処理対象プ
    ログラムに記述される所定の基本命令の構文解析及び意
    味解析を実行する基本命令解析部(40)と、 上記解析制御部(30)から呼び出されて、処理対象プ
    ログラムに記述される所定の応用命令を対応する等価な
    基本命令の組み合わせに変換する命令変換部(51)と
    、 上記命令変換部(51)により変換された基本命令の組
    み合わせを格納するバッファ領域(60)と、上記命令
    変換部(51)が変換処理を終了したときに、上記基本
    命令解析部(40)を呼び出す解析呼出部(52)とを
    備え、 上記解析呼出部(52)により呼び出された上記基本命
    令解析部(40)が、上記バッファ領域(60)に格納
    される基本命令の組み合わせの構文解析及び意味解析を
    実行するよう処理することで、基本命令と応用命令の構
    文解析及び意味解析を、同一のコンパイル処理フェーズ
    で実現したことを、 特徴とするコンパイル処理方式。
JP21136788A 1988-08-25 1988-08-25 コンパイル処理方式 Pending JPH0259823A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21136788A JPH0259823A (ja) 1988-08-25 1988-08-25 コンパイル処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21136788A JPH0259823A (ja) 1988-08-25 1988-08-25 コンパイル処理方式

Publications (1)

Publication Number Publication Date
JPH0259823A true JPH0259823A (ja) 1990-02-28

Family

ID=16604794

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21136788A Pending JPH0259823A (ja) 1988-08-25 1988-08-25 コンパイル処理方式

Country Status (1)

Country Link
JP (1) JPH0259823A (ja)

Similar Documents

Publication Publication Date Title
US5606697A (en) Compiler system for language processing program
US7219338B2 (en) Multi-language compilation
US7823139B2 (en) Method and system for translating programming languages
JPH08339304A (ja) 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置
JP3640081B2 (ja) Mpiプログラムのコンパイルにおける最適化方法
EP0692115B1 (en) System for conversion of loop functions to continuation-passing style
JPH0259823A (ja) コンパイル処理方式
JPH10187461A (ja) 言語処理方式
JPH04286029A (ja) ソースプログラム・コンバータ
JPH10340193A (ja) 言語処理装置、言語処理方法およびその記録媒体
JP2001265605A (ja) コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム
JPS6074039A (ja) コンパイル言語認識処理方式
JP3370243B2 (ja) コンパイル方法及び装置
JPH07121379A (ja) 複数言語混在コンパイラ
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JPH0561687A (ja) コンパイラの処理方式
JPH06103079A (ja) コンパイル方式
JPH11306150A (ja) コンパイル処理方式、その方法およびコンパイラプログラムを記録したコンピュータ読み取り可能な記録媒体
JPH03132825A (ja) 論理型言語のコンパイル方式
JPS60181839A (ja) プログラム最適化変換方式
JPH06282443A (ja) プログラム編集方法と装置
JPH04323730A (ja) 最適化処理方式
JPH056278A (ja) Fortranコンパイル処理装置
JP2001034482A (ja) コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体
JPH01121939A (ja) プログラム変換方式