(57)【特許請求の範囲】
【請求項１】
既に作成された中間言語を記憶するライブラリ装置と、
翻訳作業領域およびソースプログラム格納領域およびオブジェクトプログラム格納領域を有する主記憶装置と、
インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第１のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第１のサブプログラムが格納される第２のファイル、新たに中間言語が作成される第２のサブプログラムが格納される第３のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれＣＰＵに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行う言語処理装置において、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼び出し手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
を備え、
前記ライブラリ装置に前記中間言語が格納されていないとき、前記第２のサブプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
前記原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
を備えたことを特徴とする言語処理装置。
【請求項２】
インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第１のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第１のサブプログラムが格納される第２のファイル、新たに中間言語が作成される第２のサブプログラムが格納される第３のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれＣＰＵに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行うためのインライン展開プログラムを記録した記録媒体において、
コンピュータを、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼出手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
前記中間言語が存在しないとき、前記ソースプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
して機能させるためのインライン展開プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、インライン展開する手続きがもつソースプログラムの中間言語がすでに保存されているとき効率よくオブジェクトプログラムを生成する言語処理装置およびインライン展開プログラムを記憶したコンピュータ読取可能な記憶媒体に関する。
ソースプログラムをオブジェクトプログラムに展開する際、ソースプログラムのうちのメインプログラムを構文解析して、メインプログラム中にインライン展開の対象となる手続きがあるときは、サブプログラムを呼んで実行する処理が行われるが、このような処理速度向上の面からは、いわば必ずしも好ましくない処理形態となることを排除するため、オブジェクト展開する際にサブプログラムを取り込んで展開しておくインライン展開が行われることがある
【０００２】
【従来の技術】
従来の言語処理システムとしては、例えば図８に示すようなものがある。
図８において、１０１は高級言語により記述されたソースプログラムのうちのメインプログラム、１０２はソースプログラムのうちのメインプログラム１０１によりコールされるサブプログラム、１０３はソースプログラムのうちのメインプログラム１０１によりコールされるサブプログラムである。これらのメインプログラム１０１、サブプログラム１０２，１０３は同一のファイル１０４内に格納されている。
【０００３】
１０５はコンパイラであり、コンパイラ１０５はメインプログラム１０１、サブプログラム１０２，１０３をオブジェクトプログラム１０６に翻訳処理する。コンパイラ１０５内に設けられた構文解析部１０７は、メインプログラム１０１の構文を解析して中間言語１０８に展開する。また、構文解析部１０７はサブプログラム１０２，１０３の構文をそれぞれ解析し、中間言語１０９，１１０にそれぞれ展開する。
【０００４】
意味解析部１１１は、構文解析部１０７で展開された中間言語１０８，１０９，１１０の意味を解析する。インライン展開部１１２は、意味解析部１１１で意味が解析された中間言語１０８，１０９，１１０からインライン展開を行う。コード生成部１１３はインライン展開部１１２でインライン展開された中間言語１０８，１０９，１１０からコードを生成する。こうして、オブジェクトプログラム１０６が生成される。
【０００５】
図９は従来例のインライン展開の処理を説明するフローチャートである。
図９において、まず、ステップＳ１０１でソースプログラムのうちのメインプログラム１０１の構文を解析する。メインプログラム１０１は、例えば、ｃａｌｌ  ｓｕｂ１，ｃａｌｌ  ｓｕｂ２，ｓｔｏｐ，ｅｎｄの構成を有し、構成解析により例えばｃａｌｌ  ｓｕｂ１，ｃａｌｌ  ｓｕｂ２からｃａｌｌ文として認識し、サブプログラム１０２，１０３の呼び出しの有無を判別する。
【０００６】
ステップＳ１０２ではメインプログラム１０１中にインライン展開の対象となる手続きがあるか否か判別する。この場合、メインプログラム１０１はインライン展開の対象となる手続きとしてｓｕｂ１，ｓｕｂ２を有する。
次に、ステップＳ１０３ではメインプログラム１０１、サブプログラム１０２，１０３を中間言語１０８，１０９，１１０に展開し、ステップＳ１０４で意味を解析する。その結果、ステップＳ１０５で中間言語１０８，１０９，１１０からインライン展開を行い、ステップＳ１０６でコードを生成し、その後、オブジェクトプログラム１０６を生成する。
【０００７】
【発明が解決しようとする課題】
しかしながら、このような従来の言語処理システムにあっては、インライン展開の対象となるソースプログラムの中間言語がすでに生成されて別ファイルに保存されている場合でも、再度ソースプログラムから中間言語に展開してインライン展開を行わねばならず、効率よくオブジェクトプログラムを生成することができなかった。
【０００８】
また、インライン展開を行いたい手続きをもつソースプログラムが別ファイルに存在する場合には、そのソースプログラムをそのままインライン展開することができないので、効率よくオブジェクトプログラムを生成することができなかった。
本発明は、このような従来の問題点に鑑みてなされたものであって、ソースプログラムからインライン展開するとき効率よくオブジェクトプログラムを生成することができる言語処理装置およびインライン展開プログラムを記憶したコンピュータ読取可能な記憶媒体を提供することを目的とする。
【０００９】
【課題を解決するための手段】
この目的を達成するために、本発明は、図１に示すように構成する。
請求項１の発明は、既に作成された中間言語を記憶するライブラリ装置と、
翻訳作業領域およびソースプログラム格納領域およびオブジェクトプログラム格納領域を有する主記憶装置と、
インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第１のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第１のサブプログラムが格納される第２のファイル、新たに中間言語が作成される第２のサブプログラムが格納される第３のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれＣＰＵに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行う言語処理装置において、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼び出し手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
を備え、
前記ライブラリ装置に前記中間言語が格納されていないとき、前記第２のサブプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
前記原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
を備えた言語処理装置である。
【００１０】
請求項２の発明は、インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第１のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第１のサブプログラムが格納される第２のファイル、新たに中間言語が作成される第２のサブプログラムが格納される第３のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれＣＰＵに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行うためのインライン展開プログラムを記録した記録媒体において、
コンピュータを、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼出手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
前記中間言語が存在しないとき、前記ソースプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
前記中間言語が存在しないとき、前記ソースプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
して機能させるためのインライン展開プログラムを記憶したコンピュータ読み取り可能な記憶媒体である。
【００１５】
このような構成を備えた本発明によれば、インライン展開する手続きが有するソースプログラム１２の中間言語１８が作成済であって、すでに保存されている場合は、手続きの再翻訳は行わず生成済の中間言語１８からインライン展開するので、効率よくオブジェクトプログラムを生成することができる。
また、インライン展開したい手続きが有するソースプログラムが別ファイルに存在する場合、ファイル名を指定して、そのプログラムを読み出して中間言語を生成し、生成した中間言語からインライン展開するので、効率よくオブジェクトプログラムを生成することができる。
【００１６】
【発明の実施の形態】
図２は本発明の一実施形態を示すブロック図である。
図２において、１はＣＰＵであり、ＣＰＵ１には外部記憶装置２、主記憶装置３、ライブラリ装置４および端末５がそれぞれ接続されている。
外部記憶装置２は、例えばディスク装置よりなり、言語処理システムを構成するコンパイラ６が格納されている。コンパイラ６は高級言語により記述されたソースプログラムをオブジェクトプログラムに翻訳処理する。コンパイラ６内にはソースプログラムを効率よくオブジェクトプログラムにインライン展開するためのインライン展開プログラム７が設けられている。
【００１７】
外部記憶装置２内にはそれぞれ別ファイルとして構成される第１，第２，第３のファイル８，９，１０がそれぞれ設けられ、第１のファイル８内には、ソースプログラムとしてのメインプログラム１１が格納され、第２のファイル９内にはソースプログラムとしてのサブプログラム１２が格納され、第３のファイル１０内にはソースプログラムとしてのサブプログラム１３がそれぞれ格納されている。これらのソースプログラムとしてのメインプログラム１１、サブプログラム１２，１３はオブジェクトプログラムを生成するための原始プログラムを構成している。
【００１８】
また、外部記憶装置２内には、メインプログラム１１、サブプログラム１２，１３をインライン展開して生成されたオブジェクトプログラム１４も格納される。
主記憶装置３内には翻訳作業領域１５、ソースプログラム格納領域１６、オブジェクトプログラム格納領域１７などが設けられている。翻訳作業領域１５は翻訳作業を行うための領域であり、翻訳作業領域１５上には中間言語が生成される。ソースプログラム格納領域１６には外部記憶装置２内に格納されたソースプログラムとしてのメインプログラム１１、サブプログラム１２，１３が読み出されて一時的に格納される。格納されたメインプログラム１１、サブプログラム１２，１３のうち、例えばサブプログラム１３は翻訳作業領域１６で中間言語が生成される。
【００１９】
翻訳作業領域１５における翻訳作業により生成されたオブジェクトプログラムはオブジェクトプログラム格納領域１７内に格納され、その後オブジェクトプログラム格納領域１７から読み出されて外部記憶装置２内にオブジェクトプログラム１４として格納される。
ライブラリ装置４内には、例えばインライン展開したい手続きが有するサブプログラム１２の中間言語１８が保存されている。すなわち、中間言語はすでに作成済のことがあり、作成された中間言語は、既存の中間言語１８としてライブラリ装置４内に保存しておく。この中間言語１８は翻訳作業領域１５に展開される。
【００２０】
このようなインライン展開する手続きがもつサブプログラム１２の中間言語１８がすでにライブラリ装置４内に保存されている場合には手続きの再翻訳は行わず、生成済みの中間言語１８を読み出して翻訳作業領域１５に展開してインライン展開を行う。
図３はコンパイラ６の構成例を示す図である。
【００２１】
図３において、コンパイラ６は、構文解析部１９、意味解析部２０、インライン展開手段としてのインライン展開部２１、コード生成部２２およびインライン展開プログラム７により構成されている。
インライン展開プログラム７は、手続判別手段としての手続判別部７Ａ、既存中間言語判別手段としての既存中間言語判別部７Ｂ、中間言語読出手段としての中間言語読出部７Ｃ、原始プログラム判別手段としての原始プログラム判別部７Ｄ、中間言語生成手段としての中間言語生成部７Ｅ、保存手段としての保存部７Ｆ、指定手段としての指定部７Ｇ、およびインライン展開可能判別手段としてのインライン展開可能判別部７Ｈにより構成されている。
【００２２】
構文解析部１９は、ソースプログラムとしてのメインプログラム１１、サブプログラム１２，１３の文法を解析し、構文、例えばコール文などを認識する。意味解析部２０は、型の大きさなどを解析し、正しい境界にあるかチェックするとともに引数の型などをチェックする。
インライン展開部２１は、既存の中間言語１８、生成された中間言語からインライン展開を行う。コード生成部２２は、マシン言語として動作するようにコードを生成する。
【００２３】
手続判別部７Ａは、メインプログラム１１中に解決できない呼び出し手続き、例えばｓｕｂ１，ｓｕｂ２などがあるか否かを判別する。
既存中間言語判別部７Ｂは、解決できない呼び出し手続き、例えばｓｕｂ１，ｓｕｂ２があるときその呼び出し手続きがもつサブプログラム１２，１３の中間言語がすでに存在しているか否かを判別する。
【００２４】
中間言語読出部７Ｃは、既存の中間言語１８が存在するときその中間言語１８を読み出し、翻訳作業領域１５に展開する。
原始プログラム判別部７Ｄは、中間言語１８が存在しないとき、ソースプログラムとしての原始プログラム、例えばサブプログラム１３が存在するか否かを判別する。
【００２５】
中間言語生成部７Ｅは、例えば原始プログラムとしてサブプログラム１３が存在しているときそのサブプログラム１３の構文を解析し中間言語を生成する。保存部７Ｆは、既存中間言語判別部７Ａで判別される中間言語１８を別の記憶手段としてのライブラリ装置４内に予め保存しておく。指定部７Ｇは、原始プログラム判別部７Ｄで判別される原始プログラム、例えばサブプログラム１３が格納されているファイル名で外部記憶装置２に存在しているサブプログラム１３を指定して、読み出す。この読み出されたサブプログラム１３は、前記中間言語生成部７Ｅで構文が解析され、中間言語が生成される。
【００２６】
インライン展開可能判別部７Ｈは、読み出された中間言語または生成された中間言語がインライン展開が可能であるか否かを判別する。
図４は動作を説明するフローチャートである。
まず、ステップＳ１でメインプログラム１１の構文を解析する。すなわち、構文解析部１９によりメインプログラム１１の文法を解析し、構文をコール文などとして認識する。ここで構文解析してインライン展開してオブジェクトプログラム１４を生成するためのソースプログラムの例を図５に示す。
【００２７】
ソースプログラムのうちのメインプログラム１１は、第１のファイル８内に格納されており、メインプログラム１１中で解決することができない呼び出し手続文として例えばｓｕｂ１，ｓｕｂ２が存在する。
メインプログラム１１によりコールされるサブプログラム１２は第２のファイル９内に格納されており、このサブプログラム１２の中間言語は、すでに作成済みであって、その中間言語１８はライブラリ装置４内に予め保存されている。中間言語の存在しないサブプログラム１３は第３のファイル１０内に格納されている。
【００２８】
次に、ステップＳ２でメインプログラム１１中に解決することができない手続きが存在するか手続判別部７Ａにより判別する。メインプログラム１１中に解決することができない手続きが存在しないときは、ステップＳ１１に進む。メインプログラム１１中には解決することができない手続きとして、ｓｕｂ１，ｓｕｂ２が存在するので、ここではステップＳ３に進む。
【００２９】
ステップＳ３で既存中間言語のサーチを行い、ステップＳ４で既存中間言語判別部７Ｂにより既存の中間言語が存在するか判別する。ここでは、図５に示すように、サブプログラム１２の中間言語１８が保存部７Ｆによりライブラリ装置４内にすでに保存されているので、ステップＳ５に進む。
ステップＳ５では、中間言語読出部７Ｃにより、サブプログラム１２の中間言語１８をライブラリ装置４から読み出し、翻訳作業領域１５上に読み出した中間言語１８を展開する。
【００３０】
次に、ステップＳ６で他にも解決することができない手続きがメインプログラム１１にあるか判別する。メインプログラム１１中には他にも解決することができない手続きとしてｓｕｂ２があるので、ステップＳ３に戻り、既存の中間言語をサーチし、ステップＳ４で既存中間言語が存在するか判別する。
図５に示すように、既存の中間言語１８は、サブプログラム１２のものしかなく、サブプログラム１３の中間言語は保存されていないので、ステップＳ７に進む。
【００３１】
ステップＳ７では原始プログラムのサーチを行い、ステップＳ８で原始プログラム判別部７Ｄにより原始プログラムが存在するか判別する。原始プログラムが存在しないときは、ステップＳ１１に進む。ここでは、原始プログラムとしてサブプログラム１３が存在するのでステップＳ９に進み、サブプログラム１３の構文を解析する。
【００３２】
次に、ステップＳ１０でサブプログラム１３の中間言語を生成し、翻訳作業領域１５上にサブプログラム１３の中間言語を展開する。その後、ステップＳ６で他に解決することができない手続きがあるか判別し、ここでは他にも解決することができない手続きは存在しないので、ステップＳ１１に進む。
ステップＳ１１で意味解析を行う。すなわち、意味解析部２０では型の大きさなどをチェックし、正しい境界にあるか判別し、また、引数の型のチェックなどを行う。次に、ステップＳ１２でインライン展開部２１によりインライン展開を行う。
【００３３】
図６に示すように、サブプログラム１２の中間言語１８からインライン展開を行うとともに、サブプログラム１３の生成された中間言語からインライン展開を行う。この場合、インライン展開可能判別部７Ｈにより翻訳作業領域１５上に生成された中間言語がインライン展開可能か判別してインライン展開を行う。
そして、ステップＳ１３でコード生成部２２によりコードを生成する。その後、オブジェクトプログラム１４が生成される。
【００３４】
図７はインライン展開の説明図である。
図７において、メインプログラム１１中には解決することができない手続きとして、ｓｕｂ１，ｓｕｂ２があるので、その手続きが有するサブプログラム１２，１３に対して、手続き名（ｓｕｂ１，ｓｕｂ２）をキーにして作成済の中間言語が存在するかサーチする。
【００３５】
サブプログラム１２の中間言語１８がライブラリ装置１４内に保存されているので、その中間言語１８を読み出して翻訳作業領域１５上に展開する。他に中間言語がない場合には、原始プログラムとしてのソースプログラム１３の構文解析を行い、中間言語を生成し、翻訳作業領域１５上に展開する。そして、意味解析を行い、インライン展開し、コードを生成する。こうして、オブジェクトプログラム１４を生成する。
【００３６】
このように、中間言語１８が作成済であって、すでにライブラリ装置４内に保存されている場合には、再度翻訳処理する必要がなく、作業済の中間言語１８からインライン展開するため、効率よくオブジェクトプログラム１４を生成することができる。
また、メインプログラム１１が第１のファイル８に、サブプログラム１２，１３が第２，第３のファイル９，１０にそれぞれ別ファイルとして格納されているときも、ファイル名を指定して、指定部７Ｇにより取り出せば良いため、効率よくオブジェクトプログラム１４を生成することができる。
【００３７】
【発明の効果】
以上説明してきたように、本発明によれば、中間言語が作成済であって、保存されているとき、その中間言語を読み出し、展開してインライン展開を行うため、効率よくオブジェクトプログラムを生成することができる。また、ソースプログラムが別ファイルに存在している場合でも、ファイル名を指定して読み出すため、効率よくオブジェクトプログラムを生成することができる。
【図面の簡単な説明】
【図１】本発明の原理説明図
【図２】本発明の一実施形態を示すブロック図
【図３】コンパイラの構成例を示す図
【図４】動作を説明するフローチャート
【図５】ソースプログラムの説明図
【図６】インライン展開の例を示す図
【図７】動作の説明図
【図８】従来例の説明図
【図９】従来例を説明するフローチャート
【符号の説明】
１：ＣＰＵ
２：外部記憶装置
３：主記憶装置
４：ライブラリ装置
５：端末
６：コンパイラ
７：インライン展開プログラム
７Ａ：手続判別部（手続判別手段）
７Ｂ：既存中間言語判別部（既存中間言語判別手段）
７Ｃ：中間言語読出部（中間言語読出手段）
７Ｄ：原始プログラム判別部（原始プログラム判別手段）
７Ｅ：中間言語生成部（中間言語生成手段）
７Ｆ：保存部（保存手段）
７Ｇ：指定部（指定手段）
７Ｈ：インライン展開可能判別部（インライン展開可能判別手段）
８：第１のファイル
９：第２のファイル
１０：第３のファイル
１１：メインプログラム（ソースプログラム）
１２，１３：サブプログラム（ソースプログラム）
１４：オブジェクトプログラム
１５：翻訳作業領域
１６：ソースプログラム格納領域
１７：オブジェクトプログラム格納領域
１８：中間言語
１９：構文解析部
２０：意味解析部
２１：インライン展開部（インライン展開手段）
２２：コード生成部
【図１】
0003921288.tif 000002
【図２】
0003921288.tif 000003
【図３】
0003921288.tif 000004
【図４】
0003921288.tif 000005
【図５】
0003921288.tif 000006
【図６】
0003921288.tif 000007
【図７】
0003921288.tif 000008
【図８】
0003921288.tif 000009
【図９】
0003921288.tif 000010