JP3921288B2 - Computer-readable storage medium storing language processing apparatus and inline expansion program - Google Patents

Computer-readable storage medium storing language processing apparatus and inline expansion program Download PDF

Info

Publication number
JP3921288B2
JP3921288B2 JP33549297A JP33549297A JP3921288B2 JP 3921288 B2 JP3921288 B2 JP 3921288B2 JP 33549297 A JP33549297 A JP 33549297A JP 33549297 A JP33549297 A JP 33549297A JP 3921288 B2 JP3921288 B2 JP 3921288B2
Authority
JP
Japan
Prior art keywords
intermediate language
program
inline expansion
file
stored
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.)
Expired - Fee Related
Application number
JP33549297A
Other languages
Japanese (ja)
Other versions
JPH10320213A (en
Inventor
延佳 山地
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 JP33549297A priority Critical patent/JP3921288B2/en
Publication of JPH10320213A publication Critical patent/JPH10320213A/en
Application granted granted Critical
Publication of JP3921288B2 publication Critical patent/JP3921288B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、インライン展開する手続きがもつソースプログラムの中間言語がすでに保存されているとき効率よくオブジェクトプログラムを生成する言語処理装置およびインライン展開プログラムを記憶したコンピュータ読取可能な記憶媒体に関する。
ソースプログラムをオブジェクトプログラムに展開する際、ソースプログラムのうちのメインプログラムを構文解析して、メインプログラム中にインライン展開の対象となる手続きがあるときは、サブプログラムを呼んで実行する処理が行われるが、このような処理速度向上の面からは、いわば必ずしも好ましくない処理形態となることを排除するため、オブジェクト展開する際にサブプログラムを取り込んで展開しておくインライン展開が行われることがある
【0002】
【従来の技術】
従来の言語処理システムとしては、例えば図8に示すようなものがある。
図8において、101は高級言語により記述されたソースプログラムのうちのメインプログラム、102はソースプログラムのうちのメインプログラム101によりコールされるサブプログラム、103はソースプログラムのうちのメインプログラム101によりコールされるサブプログラムである。これらのメインプログラム101、サブプログラム102,103は同一のファイル104内に格納されている。
【0003】
105はコンパイラであり、コンパイラ105はメインプログラム101、サブプログラム102,103をオブジェクトプログラム106に翻訳処理する。コンパイラ105内に設けられた構文解析部107は、メインプログラム101の構文を解析して中間言語108に展開する。また、構文解析部107はサブプログラム102,103の構文をそれぞれ解析し、中間言語109,110にそれぞれ展開する。
【0004】
意味解析部111は、構文解析部107で展開された中間言語108,109,110の意味を解析する。インライン展開部112は、意味解析部111で意味が解析された中間言語108,109,110からインライン展開を行う。コード生成部113はインライン展開部112でインライン展開された中間言語108,109,110からコードを生成する。こうして、オブジェクトプログラム106が生成される。
【0005】
図9は従来例のインライン展開の処理を説明するフローチャートである。
図9において、まず、ステップS101でソースプログラムのうちのメインプログラム101の構文を解析する。メインプログラム101は、例えば、call sub1,call sub2,stop,endの構成を有し、構成解析により例えばcall sub1,call sub2からcall文として認識し、サブプログラム102,103の呼び出しの有無を判別する。
【0006】
ステップS102ではメインプログラム101中にインライン展開の対象となる手続きがあるか否か判別する。この場合、メインプログラム101はインライン展開の対象となる手続きとしてsub1,sub2を有する。
次に、ステップS103ではメインプログラム101、サブプログラム102,103を中間言語108,109,110に展開し、ステップS104で意味を解析する。その結果、ステップS105で中間言語108,109,110からインライン展開を行い、ステップS106でコードを生成し、その後、オブジェクトプログラム106を生成する。
【0007】
【発明が解決しようとする課題】
しかしながら、このような従来の言語処理システムにあっては、インライン展開の対象となるソースプログラムの中間言語がすでに生成されて別ファイルに保存されている場合でも、再度ソースプログラムから中間言語に展開してインライン展開を行わねばならず、効率よくオブジェクトプログラムを生成することができなかった。
【0008】
また、インライン展開を行いたい手続きをもつソースプログラムが別ファイルに存在する場合には、そのソースプログラムをそのままインライン展開することができないので、効率よくオブジェクトプログラムを生成することができなかった。
本発明は、このような従来の問題点に鑑みてなされたものであって、ソースプログラムからインライン展開するとき効率よくオブジェクトプログラムを生成することができる言語処理装置およびインライン展開プログラムを記憶したコンピュータ読取可能な記憶媒体を提供することを目的とする。
【0009】
【課題を解決するための手段】
この目的を達成するために、本発明は、図1に示すように構成する。
請求項1の発明は、既に作成された中間言語を記憶するライブラリ装置と、
翻訳作業領域およびソースプログラム格納領域およびオブジェクトプログラム格納領域を有する主記憶装置と、
インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第1のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第1のサブプログラムが格納される第2のファイル、新たに中間言語が作成される第2のサブプログラムが格納される第3のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれCPUに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行う言語処理装置において、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼び出し手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
を備え、
前記ライブラリ装置に前記中間言語が格納されていないとき、前記第2のサブプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
前記原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
を備えた言語処理装置である
【0010】
請求項2の発明は、インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第1のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第1のサブプログラムが格納される第2のファイル、新たに中間言語が作成される第2のサブプログラムが格納される第3のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれCPUに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行うためのインライン展開プログラムを記録した記録媒体において、
コンピュータを、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼出手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
前記中間言語が存在しないとき、前記ソースプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
前記中間言語が存在しないとき、前記ソースプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
して機能させるためのインライン展開プログラムを記憶したコンピュータ読み取り可能な記憶媒体である
【0015】
このような構成を備えた本発明によれば、インライン展開する手続きが有するソースプログラム12の中間言語18が作成済であって、すでに保存されている場合は、手続きの再翻訳は行わず生成済の中間言語18からインライン展開するので、効率よくオブジェクトプログラムを生成することができる。
また、インライン展開したい手続きが有するソースプログラムが別ファイルに存在する場合、ファイル名を指定して、そのプログラムを読み出して中間言語を生成し、生成した中間言語からインライン展開するので、効率よくオブジェクトプログラムを生成することができる。
【0016】
【発明の実施の形態】
図2は本発明の一実施形態を示すブロック図である。
図2において、1はCPUであり、CPU1には外部記憶装置2、主記憶装置3、ライブラリ装置4および端末5がそれぞれ接続されている。
外部記憶装置2は、例えばディスク装置よりなり、言語処理システムを構成するコンパイラ6が格納されている。コンパイラ6は高級言語により記述されたソースプログラムをオブジェクトプログラムに翻訳処理する。コンパイラ6内にはソースプログラムを効率よくオブジェクトプログラムにインライン展開するためのインライン展開プログラム7が設けられている。
【0017】
外部記憶装置2内にはそれぞれ別ファイルとして構成される第1,第2,第3のファイル8,9,10がそれぞれ設けられ、第1のファイル8内には、ソースプログラムとしてのメインプログラム11が格納され、第2のファイル9内にはソースプログラムとしてのサブプログラム12が格納され、第3のファイル10内にはソースプログラムとしてのサブプログラム13がそれぞれ格納されている。これらのソースプログラムとしてのメインプログラム11、サブプログラム12,13はオブジェクトプログラムを生成するための原始プログラムを構成している。
【0018】
また、外部記憶装置2内には、メインプログラム11、サブプログラム12,13をインライン展開して生成されたオブジェクトプログラム14も格納される。
主記憶装置3内には翻訳作業領域15、ソースプログラム格納領域16、オブジェクトプログラム格納領域17などが設けられている。翻訳作業領域15は翻訳作業を行うための領域であり、翻訳作業領域15上には中間言語が生成される。ソースプログラム格納領域16には外部記憶装置2内に格納されたソースプログラムとしてのメインプログラム11、サブプログラム12,13が読み出されて一時的に格納される。格納されたメインプログラム11、サブプログラム12,13のうち、例えばサブプログラム13は翻訳作業領域16で中間言語が生成される。
【0019】
翻訳作業領域15における翻訳作業により生成されたオブジェクトプログラムはオブジェクトプログラム格納領域17内に格納され、その後オブジェクトプログラム格納領域17から読み出されて外部記憶装置2内にオブジェクトプログラム14として格納される。
ライブラリ装置4内には、例えばインライン展開したい手続きが有するサブプログラム12の中間言語18が保存されている。すなわち、中間言語はすでに作成済のことがあり、作成された中間言語は、既存の中間言語18としてライブラリ装置4内に保存しておく。この中間言語18は翻訳作業領域15に展開される。
【0020】
このようなインライン展開する手続きがもつサブプログラム12の中間言語18がすでにライブラリ装置4内に保存されている場合には手続きの再翻訳は行わず、生成済みの中間言語18を読み出して翻訳作業領域15に展開してインライン展開を行う。
図3はコンパイラ6の構成例を示す図である。
【0021】
図3において、コンパイラ6は、構文解析部19、意味解析部20、インライン展開手段としてのインライン展開部21、コード生成部22およびインライン展開プログラム7により構成されている。
インライン展開プログラム7は、手続判別手段としての手続判別部7A、既存中間言語判別手段としての既存中間言語判別部7B、中間言語読出手段としての中間言語読出部7C、原始プログラム判別手段としての原始プログラム判別部7D、中間言語生成手段としての中間言語生成部7E、保存手段としての保存部7F、指定手段としての指定部7G、およびインライン展開可能判別手段としてのインライン展開可能判別部7Hにより構成されている。
【0022】
構文解析部19は、ソースプログラムとしてのメインプログラム11、サブプログラム12,13の文法を解析し、構文、例えばコール文などを認識する。意味解析部20は、型の大きさなどを解析し、正しい境界にあるかチェックするとともに引数の型などをチェックする。
インライン展開部21は、既存の中間言語18、生成された中間言語からインライン展開を行う。コード生成部22は、マシン言語として動作するようにコードを生成する。
【0023】
手続判別部7Aは、メインプログラム11中に解決できない呼び出し手続き、例えばsub1,sub2などがあるか否かを判別する。
既存中間言語判別部7Bは、解決できない呼び出し手続き、例えばsub1,sub2があるときその呼び出し手続きがもつサブプログラム12,13の中間言語がすでに存在しているか否かを判別する。
【0024】
中間言語読出部7Cは、既存の中間言語18が存在するときその中間言語18を読み出し、翻訳作業領域15に展開する。
原始プログラム判別部7Dは、中間言語18が存在しないとき、ソースプログラムとしての原始プログラム、例えばサブプログラム13が存在するか否かを判別する。
【0025】
中間言語生成部7Eは、例えば原始プログラムとしてサブプログラム13が存在しているときそのサブプログラム13の構文を解析し中間言語を生成する。保存部7Fは、既存中間言語判別部7Aで判別される中間言語18を別の記憶手段としてのライブラリ装置4内に予め保存しておく。指定部7Gは、原始プログラム判別部7Dで判別される原始プログラム、例えばサブプログラム13が格納されているファイル名で外部記憶装置2に存在しているサブプログラム13を指定して、読み出す。この読み出されたサブプログラム13は、前記中間言語生成部7Eで構文が解析され、中間言語が生成される。
【0026】
インライン展開可能判別部7Hは、読み出された中間言語または生成された中間言語がインライン展開が可能であるか否かを判別する。
図4は動作を説明するフローチャートである。
まず、ステップS1でメインプログラム11の構文を解析する。すなわち、構文解析部19によりメインプログラム11の文法を解析し、構文をコール文などとして認識する。ここで構文解析してインライン展開してオブジェクトプログラム14を生成するためのソースプログラムの例を図5に示す。
【0027】
ソースプログラムのうちのメインプログラム11は、第1のファイル8内に格納されており、メインプログラム11中で解決することができない呼び出し手続文として例えばsub1,sub2が存在する。
メインプログラム11によりコールされるサブプログラム12は第2のファイル9内に格納されており、このサブプログラム12の中間言語は、すでに作成済みであって、その中間言語18はライブラリ装置4内に予め保存されている。中間言語の存在しないサブプログラム13は第3のファイル10内に格納されている。
【0028】
次に、ステップS2でメインプログラム11中に解決することができない手続きが存在するか手続判別部7Aにより判別する。メインプログラム11中に解決することができない手続きが存在しないときは、ステップS11に進む。メインプログラム11中には解決することができない手続きとして、sub1,sub2が存在するので、ここではステップS3に進む。
【0029】
ステップS3で既存中間言語のサーチを行い、ステップS4で既存中間言語判別部7Bにより既存の中間言語が存在するか判別する。ここでは、図5に示すように、サブプログラム12の中間言語18が保存部7Fによりライブラリ装置4内にすでに保存されているので、ステップS5に進む。
ステップS5では、中間言語読出部7Cにより、サブプログラム12の中間言語18をライブラリ装置4から読み出し、翻訳作業領域15上に読み出した中間言語18を展開する。
【0030】
次に、ステップS6で他にも解決することができない手続きがメインプログラム11にあるか判別する。メインプログラム11中には他にも解決することができない手続きとしてsub2があるので、ステップS3に戻り、既存の中間言語をサーチし、ステップS4で既存中間言語が存在するか判別する。
図5に示すように、既存の中間言語18は、サブプログラム12のものしかなく、サブプログラム13の中間言語は保存されていないので、ステップS7に進む。
【0031】
ステップS7では原始プログラムのサーチを行い、ステップS8で原始プログラム判別部7Dにより原始プログラムが存在するか判別する。原始プログラムが存在しないときは、ステップS11に進む。ここでは、原始プログラムとしてサブプログラム13が存在するのでステップS9に進み、サブプログラム13の構文を解析する。
【0032】
次に、ステップS10でサブプログラム13の中間言語を生成し、翻訳作業領域15上にサブプログラム13の中間言語を展開する。その後、ステップS6で他に解決することができない手続きがあるか判別し、ここでは他にも解決することができない手続きは存在しないので、ステップS11に進む。
ステップS11で意味解析を行う。すなわち、意味解析部20では型の大きさなどをチェックし、正しい境界にあるか判別し、また、引数の型のチェックなどを行う。次に、ステップS12でインライン展開部21によりインライン展開を行う。
【0033】
図6に示すように、サブプログラム12の中間言語18からインライン展開を行うとともに、サブプログラム13の生成された中間言語からインライン展開を行う。この場合、インライン展開可能判別部7Hにより翻訳作業領域15上に生成された中間言語がインライン展開可能か判別してインライン展開を行う。
そして、ステップS13でコード生成部22によりコードを生成する。その後、オブジェクトプログラム14が生成される。
【0034】
図7はインライン展開の説明図である。
図7において、メインプログラム11中には解決することができない手続きとして、sub1,sub2があるので、その手続きが有するサブプログラム12,13に対して、手続き名(sub1,sub2)をキーにして作成済の中間言語が存在するかサーチする。
【0035】
サブプログラム12の中間言語18がライブラリ装置14内に保存されているので、その中間言語18を読み出して翻訳作業領域15上に展開する。他に中間言語がない場合には、原始プログラムとしてのソースプログラム13の構文解析を行い、中間言語を生成し、翻訳作業領域15上に展開する。そして、意味解析を行い、インライン展開し、コードを生成する。こうして、オブジェクトプログラム14を生成する。
【0036】
このように、中間言語18が作成済であって、すでにライブラリ装置4内に保存されている場合には、再度翻訳処理する必要がなく、作業済の中間言語18からインライン展開するため、効率よくオブジェクトプログラム14を生成することができる。
また、メインプログラム11が第1のファイル8に、サブプログラム12,13が第2,第3のファイル9,10にそれぞれ別ファイルとして格納されているときも、ファイル名を指定して、指定部7Gにより取り出せば良いため、効率よくオブジェクトプログラム14を生成することができる。
【0037】
【発明の効果】
以上説明してきたように、本発明によれば、中間言語が作成済であって、保存されているとき、その中間言語を読み出し、展開してインライン展開を行うため、効率よくオブジェクトプログラムを生成することができる。また、ソースプログラムが別ファイルに存在している場合でも、ファイル名を指定して読み出すため、効率よくオブジェクトプログラムを生成することができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の一実施形態を示すブロック図
【図3】コンパイラの構成例を示す図
【図4】動作を説明するフローチャート
【図5】ソースプログラムの説明図
【図6】インライン展開の例を示す図
【図7】動作の説明図
【図8】従来例の説明図
【図9】従来例を説明するフローチャート
【符号の説明】
1:CPU
2:外部記憶装置
3:主記憶装置
4:ライブラリ装置
5:端末
6:コンパイラ
7:インライン展開プログラム
7A:手続判別部(手続判別手段)
7B:既存中間言語判別部(既存中間言語判別手段)
7C:中間言語読出部(中間言語読出手段)
7D:原始プログラム判別部(原始プログラム判別手段)
7E:中間言語生成部(中間言語生成手段)
7F:保存部(保存手段)
7G:指定部(指定手段)
7H:インライン展開可能判別部(インライン展開可能判別手段)
8:第1のファイル
9:第2のファイル
10:第3のファイル
11:メインプログラム(ソースプログラム)
12,13:サブプログラム(ソースプログラム)
14:オブジェクトプログラム
15:翻訳作業領域
16:ソースプログラム格納領域
17:オブジェクトプログラム格納領域
18:中間言語
19:構文解析部
20:意味解析部
21:インライン展開部(インライン展開手段)
22:コード生成部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a language processing apparatus that efficiently generates an object program when an intermediate language of a source program included in a procedure for inline expansion is already stored, and a computer-readable storage medium that stores the inline expansion program.
When a source program is expanded into an object program, the main program in the source program is parsed, and if there is a procedure that is subject to inline expansion in the main program, a process is executed that calls the subprogram and executes it. However, from the aspect of improving the processing speed, in-line expansion may be performed, in which subprograms are taken in and expanded when an object is expanded in order to eliminate an undesirable processing form. 0002
[Prior art]
An example of a conventional language processing system is shown in FIG.
In FIG. 8, 101 is a main program of source programs described in a high-level language, 102 is a subprogram called by the main program 101 of source programs, and 103 is called by the main program 101 of source programs. Is a subprogram. These main program 101 and subprograms 102 and 103 are stored in the same file 104.
[0003]
Reference numeral 105 denotes a compiler. The compiler 105 translates the main program 101 and the subprograms 102 and 103 into the object program 106. A syntax analysis unit 107 provided in the compiler 105 analyzes the syntax of the main program 101 and develops it into the intermediate language 108. The syntax analysis unit 107 analyzes the syntaxes of the subprograms 102 and 103 and develops them into intermediate languages 109 and 110, respectively.
[0004]
The semantic analysis unit 111 analyzes the meanings of the intermediate languages 108, 109, and 110 developed by the syntax analysis unit 107. The inline expansion unit 112 performs inline expansion from the intermediate languages 108, 109, and 110 whose meanings are analyzed by the semantic analysis unit 111. The code generation unit 113 generates a code from the intermediate languages 108, 109, and 110 expanded inline by the inline expansion unit 112. Thus, the object program 106 is generated.
[0005]
FIG. 9 is a flowchart for explaining a conventional inline expansion process.
In FIG. 9, first, in step S101, the syntax of the main program 101 among the source programs is analyzed. The main program 101 has a configuration of, for example, call sub1, call sub2, stop, end, and is recognized as a call statement from, for example, call sub1, call sub2 by configuration analysis, and determines whether the subprograms 102, 103 are called. .
[0006]
In step S102, it is determined whether or not there is a procedure to be inline expanded in the main program 101. In this case, the main program 101 has sub1 and sub2 as procedures for inline expansion.
Next, in step S103, the main program 101 and subprograms 102 and 103 are expanded into intermediate languages 108, 109 and 110, and the meaning is analyzed in step S104. As a result, inline expansion is performed from the intermediate languages 108, 109, and 110 in step S105, a code is generated in step S106, and then an object program 106 is generated.
[0007]
[Problems to be solved by the invention]
However, in such a conventional language processing system, even if the intermediate language of the source program to be inline expanded has already been generated and saved in a separate file, it is expanded again from the source program to the intermediate language. Inline expansion must be performed, and the object program could not be generated efficiently.
[0008]
In addition, when a source program having a procedure to be expanded inline exists in another file, the source program cannot be expanded inline as it is, so that an object program cannot be generated efficiently.
The present invention has been made in view of the above-described conventional problems, and is a language processing apparatus capable of efficiently generating an object program when inlined from a source program, and a computer reading storing an inlined program An object is to provide a possible storage medium .
[0009]
[Means for Solving the Problems]
In order to achieve this object, the present invention is configured as shown in FIG.
The invention of claim 1 is a library device for storing an intermediate language that has already been created,
A main storage device having a translation work area, a source program storage area, and an object program storage area;
A compiler having an inline expansion program, a first file storing a main program, a second file storing a first subprogram in which a previously created intermediate language is stored in advance in the library device, and a new file A third file in which a second subprogram for creating an intermediate language is stored, and a storage device in which each object program is stored are connected to the CPU, respectively.
In the language processing device that analyzes the syntax of the main program in the source program and performs inline expansion when there is a procedure that is subject to inline expansion in the main program,
Procedure discriminating means for discriminating whether or not there is a calling procedure stored in a file other than the file in which the main program is stored in the main program by a procedure discriminating unit in the inline expansion program in the compiler,
When it is determined by the procedure determining means that there is a calling procedure stored in a file other than the file stored in the main program, it is determined in the compiler whether or not the intermediate language of the source program possessed by the calling procedure already exists. An existing intermediate language discriminating means for examining the library device by an existing intermediate language discriminating unit among inline expansion programs having
Intermediate language reading means for reading an intermediate language by an intermediate language reading unit from an inline expansion program included in the compiler when an existing intermediate language is present, and expanding it into a translation work area of the main storage area;
Inline expansion means for performing inline expansion from the read intermediate language by the inline expansion section included in the compiler;
With
A source program discriminating unit for discriminating whether or not a source program as the second subprogram exists when the intermediate language is not stored in the library device by a source program discriminating unit included in a compiler;
An intermediate language generating means for generating an intermediate language by analyzing the syntax of the source program by an intermediate language generator having in the compiler when the source program exists;
Is a language processing device .
[0010]
The invention of claim 2 stores a compiler having an inline expansion program, a first file in which a main program is stored, and a first subprogram in which an intermediate language created previously is stored in the library device in advance. A second file, a third file storing a second subprogram for newly creating an intermediate language, and a storage device storing each of the object programs are connected to the CPU,
In a recording medium that records the inline expansion program for performing inline expansion when the syntax of the main program in the source program is analyzed and there is a procedure to be inline expanded in the main program,
Computer
Procedure discriminating means for discriminating whether or not there is a calling procedure stored in a file other than the file in which the main program is stored in the main program by a procedure discriminating unit in the inline expansion program in the compiler,
When it is determined by the procedure determination means that there is a calling procedure stored in a file other than the file stored in the main program, it is determined in the compiler whether or not the intermediate language of the source program possessed by the calling procedure already exists. An existing intermediate language discriminating means for examining the library device by an existing intermediate language discriminating unit among inline expansion programs having
Intermediate language reading means for reading an intermediate language by an intermediate language reading unit from an inline expansion program included in the compiler when an existing intermediate language is present, and expanding it into a translation work area of the main storage area;
Inline expansion means for performing inline expansion from the read intermediate language by the inline expansion section included in the compiler;
When the intermediate language does not exist, a source program determination means for determining whether or not a source program as the source program exists in a compiler by a source program determination unit;
Intermediate language generation means for generating an intermediate language by analyzing the syntax of the source program by an intermediate language generation unit included in the compiler when the source program exists;
When the intermediate language does not exist, a source program determination means for determining whether or not a source program as the source program exists in a compiler by a source program determination unit;
Intermediate language generation means for generating an intermediate language by analyzing the syntax of the source program by an intermediate language generation unit included in the compiler when the source program exists;
It is a computer-readable storage medium that stores an inline expansion program for functioning .
[0015]
According to the present invention having such a configuration, when the intermediate language 18 of the source program 12 included in the procedure for inline expansion has been created and saved, the procedure has not been retranslated and has been generated. Therefore, the object program can be generated efficiently.
Also, if the source program of the procedure you want to inline expands in another file, specify the file name, read the program, generate an intermediate language, and inline expand from the generated intermediate language. Can be generated.
[0016]
DETAILED DESCRIPTION OF THE INVENTION
FIG. 2 is a block diagram showing an embodiment of the present invention.
In FIG. 2, 1 is a CPU, and an external storage device 2, a main storage device 3, a library device 4 and a terminal 5 are connected to the CPU 1, respectively.
The external storage device 2 is composed of, for example, a disk device, and stores a compiler 6 constituting a language processing system. The compiler 6 translates a source program described in a high-level language into an object program. The compiler 6 is provided with an inline expansion program 7 for efficiently expanding the source program into an object program.
[0017]
The external storage device 2 is provided with first, second, and third files 8, 9, and 10 each configured as a separate file, and in the first file 8, a main program 11 as a source program is provided. Are stored, the second file 9 stores a subprogram 12 as a source program, and the third file 10 stores a subprogram 13 as a source program. These main program 11 and subprograms 12 and 13 as source programs constitute a source program for generating an object program.
[0018]
The external storage device 2 also stores an object program 14 generated by inline expansion of the main program 11 and subprograms 12 and 13.
In the main memory 3, a translation work area 15, a source program storage area 16, an object program storage area 17 and the like are provided. The translation work area 15 is an area for performing translation work, and an intermediate language is generated on the translation work area 15. In the source program storage area 16, the main program 11 and the sub programs 12 and 13 as source programs stored in the external storage device 2 are read and temporarily stored. Of the stored main program 11 and subprograms 12 and 13, for example, the subprogram 13 generates an intermediate language in the translation work area 16.
[0019]
The object program generated by the translation work in the translation work area 15 is stored in the object program storage area 17, and then read out from the object program storage area 17 and stored as the object program 14 in the external storage device 2.
In the library device 4, for example, an intermediate language 18 of the subprogram 12 included in a procedure desired to be expanded inline is stored. That is, the intermediate language may already be created, and the created intermediate language is stored in the library device 4 as the existing intermediate language 18. This intermediate language 18 is expanded in the translation work area 15.
[0020]
When the intermediate language 18 of the subprogram 12 included in the procedure for inline expansion is already stored in the library device 4, the procedure is not re-translated, and the generated intermediate language 18 is read and the translation work area is read. 15 is expanded inline.
FIG. 3 is a diagram illustrating a configuration example of the compiler 6.
[0021]
In FIG. 3, the compiler 6 includes a syntax analysis unit 19, a semantic analysis unit 20, an inline expansion unit 21 as an inline expansion unit, a code generation unit 22, and an inline expansion program 7.
The inline expansion program 7 includes a procedure determining unit 7A as a procedure determining unit, an existing intermediate language determining unit 7B as an existing intermediate language determining unit, an intermediate language reading unit 7C as an intermediate language reading unit, and a source program as a source program determining unit. The determination unit 7D includes an intermediate language generation unit 7E as an intermediate language generation unit, a storage unit 7F as a storage unit, a specification unit 7G as a specification unit, and an inline expansion possible determination unit 7H as an inline expansion possible determination unit. Yes.
[0022]
The syntax analysis unit 19 analyzes the grammar of the main program 11 and the subprograms 12 and 13 as source programs, and recognizes the syntax, for example, a call sentence. The semantic analysis unit 20 analyzes the size of the type, checks whether the boundary is correct, and checks the type of the argument.
The inline expansion unit 21 performs inline expansion from the existing intermediate language 18 and the generated intermediate language. The code generation unit 22 generates a code so as to operate as a machine language.
[0023]
The procedure discriminating unit 7A discriminates whether or not there is a calling procedure that cannot be solved in the main program 11, for example, sub1, sub2, etc.
The existing intermediate language discriminating unit 7B discriminates whether or not the intermediate language of the subprograms 12 and 13 included in the calling procedure already exists when there is a calling procedure that cannot be solved, for example, sub1 and sub2.
[0024]
When there is an existing intermediate language 18, the intermediate language reading unit 7 </ b> C reads the intermediate language 18 and develops it in the translation work area 15.
When the intermediate language 18 does not exist, the source program determination unit 7D determines whether or not the source program as the source program, for example, the subprogram 13 exists.
[0025]
For example, when the subprogram 13 exists as a source program, the intermediate language generation unit 7E analyzes the syntax of the subprogram 13 and generates an intermediate language. The storage unit 7F stores the intermediate language 18 determined by the existing intermediate language determination unit 7A in advance in the library device 4 as another storage unit. The designation unit 7G designates and reads out the source program determined by the source program determination unit 7D, for example, the subprogram 13 existing in the external storage device 2 with the file name in which the subprogram 13 is stored. The syntax of the read subprogram 13 is analyzed by the intermediate language generator 7E to generate an intermediate language.
[0026]
The inline expansion possibility determination unit 7H determines whether the read intermediate language or the generated intermediate language can be expanded inline.
FIG. 4 is a flowchart for explaining the operation.
First, in step S1, the syntax of the main program 11 is analyzed. That is, the syntax analysis unit 19 analyzes the grammar of the main program 11 and recognizes the syntax as a call sentence or the like. FIG. 5 shows an example of a source program for parsing and inline expansion to generate the object program 14.
[0027]
The main program 11 of the source programs is stored in the first file 8, and sub1 and sub2 exist as calling procedure statements that cannot be solved in the main program 11.
The subprogram 12 called by the main program 11 is stored in the second file 9. The intermediate language of the subprogram 12 has already been created, and the intermediate language 18 is stored in the library device 4 in advance. Saved. The subprogram 13 having no intermediate language is stored in the third file 10.
[0028]
Next, in step S2, the procedure discrimination unit 7A determines whether there is a procedure that cannot be solved in the main program 11. If there is no unsolvable procedure in the main program 11, the process proceeds to step S11. Since there are sub1 and sub2 as procedures that cannot be solved in the main program 11, the process proceeds to step S3.
[0029]
In step S3, the existing intermediate language is searched, and in step S4, the existing intermediate language determination unit 7B determines whether an existing intermediate language exists. Here, as shown in FIG. 5, since the intermediate language 18 of the subprogram 12 is already stored in the library apparatus 4 by the storage unit 7F, the process proceeds to step S5.
In step S5, the intermediate language 18 of the subprogram 12 is read from the library device 4 by the intermediate language reading unit 7C, and the read intermediate language 18 is expanded on the translation work area 15.
[0030]
Next, in step S6, it is determined whether there are other procedures in the main program 11 that cannot be solved. Since there is sub2 in the main program 11 as a procedure that cannot be solved elsewhere, the process returns to step S3 to search for an existing intermediate language, and in step S4, it is determined whether an existing intermediate language exists.
As shown in FIG. 5, since the existing intermediate language 18 is only for the subprogram 12, and the intermediate language of the subprogram 13 is not stored, the process proceeds to step S7.
[0031]
In step S7, the source program is searched, and in step S8, the source program determination unit 7D determines whether the source program exists. When the source program does not exist, the process proceeds to step S11. Here, since the subprogram 13 exists as a source program, the process proceeds to step S9 and the syntax of the subprogram 13 is analyzed.
[0032]
Next, in step S10, an intermediate language of the subprogram 13 is generated, and the intermediate language of the subprogram 13 is expanded on the translation work area 15. Thereafter, in step S6, it is determined whether there is any other procedure that cannot be solved. Since there is no other procedure that cannot be solved here, the process proceeds to step S11.
In step S11, semantic analysis is performed. That is, the semantic analysis unit 20 checks the size of the type, determines whether the boundary is correct, and checks the type of the argument. Next, inline expansion is performed by the inline expansion unit 21 in step S12.
[0033]
As shown in FIG. 6, inline expansion is performed from the intermediate language 18 of the subprogram 12, and inline expansion is performed from the intermediate language generated by the subprogram 13. In this case, the inline expansion determination unit 7H determines whether the intermediate language generated on the translation work area 15 can be expanded inline and performs inline expansion.
In step S13, the code generation unit 22 generates a code. Thereafter, the object program 14 is generated.
[0034]
FIG. 7 is an explanatory diagram of inline expansion.
In FIG. 7, there are sub1 and sub2 as procedures that cannot be solved in the main program 11. Therefore, the subprograms 12 and 13 included in the procedure are created using the procedure names (sub1 and sub2) as keys. Search for existing intermediate languages.
[0035]
Since the intermediate language 18 of the subprogram 12 is stored in the library device 14, the intermediate language 18 is read and expanded on the translation work area 15. If there is no other intermediate language, the source program 13 as a source program is parsed to generate an intermediate language and developed on the translation work area 15. Then, semantic analysis is performed, inline expansion is performed, and code is generated. Thus, the object program 14 is generated.
[0036]
As described above, when the intermediate language 18 has been created and is already stored in the library apparatus 4, it is not necessary to perform the translation process again, and the inline expansion is performed from the worked intermediate language 18. An object program 14 can be generated.
Also, when the main program 11 is stored as a separate file in the first file 8 and the subprograms 12 and 13 are stored as separate files in the second and third files 9 and 10, respectively, the file name is designated and the designation unit is designated. The object program 14 can be generated efficiently because it is sufficient to extract it with 7G.
[0037]
【The invention's effect】
As described above, according to the present invention, when an intermediate language has been created and saved, the intermediate language is read, expanded, and expanded inline, so that an object program is efficiently generated. be able to. Even when the source program exists in another file, the object program can be generated efficiently because the file name is designated and read.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating the principle of the present invention. FIG. 2 is a block diagram illustrating an embodiment of the present invention. FIG. 3 is a diagram illustrating a configuration example of a compiler. FIG. 6 is a diagram illustrating an example of inline expansion. FIG. 7 is a diagram illustrating an operation. FIG. 8 is a diagram illustrating a conventional example. FIG. 9 is a flowchart illustrating a conventional example.
1: CPU
2: External storage device 3: Main storage device 4: Library device 5: Terminal 6: Compiler 7: Inline expansion program 7A: Procedure discrimination unit (procedure discrimination means)
7B: Existing intermediate language discrimination unit (existing intermediate language discrimination means)
7C: Intermediate language reading unit (intermediate language reading means)
7D: Primitive program discriminating section (primitive program discriminating means)
7E: Intermediate language generator (intermediate language generator)
7F: storage unit (storage means)
7G: Designation part (designation means)
7H: Inline development possibility determination unit (inline development possibility determination means)
8: First file 9: Second file 10: Third file 11: Main program (source program)
12, 13: Subprogram (source program)
14: Object program 15: Translation work area 16: Source program storage area 17: Object program storage area 18: Intermediate language 19: Syntax analysis section 20: Semantic analysis section 21: Inline expansion section (inline expansion means)
22: Code generator

Claims (2)

既に作成された中間言語を記憶するライブラリ装置と、
翻訳作業領域およびソースプログラム格納領域およびオブジェクトプログラム格納領域を有する主記憶装置と、
インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第1のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第1のサブプログラムが格納される第2のファイル、新たに中間言語が作成される第2のサブプログラムが格納される第3のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれCPUに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行う言語処理装置において、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼び出し手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
を備え、
前記ライブラリ装置に前記中間言語が格納されていないとき、前記第2のサブプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
前記原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
を備えたことを特徴とする言語処理装置。
A library device for storing intermediate languages already created;
A main storage device having a translation work area, a source program storage area, and an object program storage area;
A compiler having an inline expansion program, a first file storing a main program, a second file storing a first subprogram in which a previously created intermediate language is stored in advance in the library device, and a new file A third file in which a second subprogram for creating an intermediate language is stored, and a storage device in which each object program is stored are connected to the CPU, respectively.
In the language processing device that analyzes the syntax of the main program in the source program and performs inline expansion when there is a procedure that is subject to inline expansion in the main program,
Procedure discriminating means for discriminating whether or not there is a calling procedure stored in a file other than the file in which the main program is stored in the main program by a procedure discriminating unit in the inline expansion program in the compiler,
When it is determined by the procedure determining means that there is a calling procedure stored in a file other than the file stored in the main program, it is determined in the compiler whether or not the intermediate language of the source program possessed by the calling procedure already exists. An existing intermediate language discriminating means for examining the library device by an existing intermediate language discriminating unit among inline expansion programs having;
Intermediate language reading means for reading an intermediate language by an intermediate language reading unit from an inline expansion program included in the compiler when an existing intermediate language is present, and expanding it into a translation work area of the main storage area;
Inline expansion means for performing inline expansion from the read intermediate language by the inline expansion section included in the compiler;
With
A source program discriminating unit for discriminating whether or not a source program as the second subprogram exists when the intermediate language is not stored in the library device by a source program discriminating unit included in a compiler;
An intermediate language generating means for generating an intermediate language by analyzing the syntax of the source program by an intermediate language generator having in the compiler when the source program exists;
A language processing apparatus comprising:
インライン展開プログラムを有するコンパイラ、メインプログラムが格納される第1のファイル、以前に作成された中間言語が予め前記ライブラリ装置に記憶されている第1のサブプログラムが格納される第2のファイル、新たに中間言語が作成される第2のサブプログラムが格納される第3のファイル、オブジェクトプログラムのそれぞれが格納される記憶装置とがそれぞれCPUに接続されており、
ソースプログラムのうちのメインプログラムの構文を解析してメインプログラム中にインライン展開の対象となる手続きがあるときインライン展開を行うためのインライン展開プログラムを記録した記録媒体において、
コンピュータを、
前記メインプログラム中にメインプログラムが格納されているファイル以外のファイルに格納されている呼出手続があるか否かを前記コンパイラ中に有するインライン展開プログラムのうち手続判別部によって判別する手続判別手段と、
該手続判別手段によってメインプログラムに格納されているファイル以外に格納されている呼出手続があると判別されたときその呼出手続がもつソースプログラムの中間言語がすでに存在しているか否かをコンパイラ中に有するインライン展開プログラムのうち既存中間言語判別部によって前記ライブラリ装置を調べる既存中間言語判別手段と、
既存の中間言語が存在するときそのコンパイラ中に有するインライン展開プログラムのうち中間言語読出部によって中間言語を読み出して前記主記憶領域の翻訳作業領域に展開する中間言語読出手段と、
読み出した中間言語からコンパイラ中に有するインライン展開部によってインライン展開を行うインライン展開手段と、
前記中間言語が存在しないとき、前記ソースプログラムとしての原始プログラムが存在するか否かをコンパイラ中に有する原始プログラム判別部によって判別する原始プログラム判別手段と、
原始プログラムが存在しているときその原始プログラムの構文をコンパイラ中に有する中間言語生成部によって解析し中間言語を生成する中間言語生成手段と、
して機能させるためのインライン展開プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
A compiler having an inline expansion program, a first file storing a main program, a second file storing a first subprogram in which a previously created intermediate language is stored in advance in the library device, and a new file A third file in which a second subprogram for creating an intermediate language is stored, and a storage device in which each object program is stored are connected to the CPU, respectively.
In a recording medium that records the inline expansion program for performing inline expansion when the syntax of the main program in the source program is analyzed and there is a procedure to be inline expanded in the main program,
Computer
Procedure discriminating means for discriminating whether or not there is a calling procedure stored in a file other than the file in which the main program is stored in the main program by a procedure discriminating unit in the inline expansion program in the compiler,
When it is determined by the procedure determination means that there is a calling procedure stored in a file other than the file stored in the main program, it is determined in the compiler whether or not the intermediate language of the source program possessed by the calling procedure already exists. An existing intermediate language discriminating means for examining the library device by an existing intermediate language discriminating unit among inline expansion programs having;
Intermediate language reading means for reading an intermediate language by an intermediate language reading unit from an inline expansion program included in the compiler when an existing intermediate language is present, and expanding it into a translation work area of the main storage area;
Inline expansion means for performing inline expansion from the read intermediate language by the inline expansion section included in the compiler;
When the intermediate language does not exist, a source program determination means for determining whether or not a source program as the source program exists in a compiler by a source program determination unit;
Intermediate language generation means for generating an intermediate language by analyzing the syntax of the source program by an intermediate language generation unit included in the compiler when the source program exists;
A computer-readable storage medium storing an inline expansion program for causing the computer to function.
JP33549297A 1997-03-14 1997-12-05 Computer-readable storage medium storing language processing apparatus and inline expansion program Expired - Fee Related JP3921288B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP33549297A JP3921288B2 (en) 1997-03-14 1997-12-05 Computer-readable storage medium storing language processing apparatus and inline expansion program

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP6056597 1997-03-14
JP9-60565 1997-03-14
JP33549297A JP3921288B2 (en) 1997-03-14 1997-12-05 Computer-readable storage medium storing language processing apparatus and inline expansion program

Publications (2)

Publication Number Publication Date
JPH10320213A JPH10320213A (en) 1998-12-04
JP3921288B2 true JP3921288B2 (en) 2007-05-30

Family

ID=26401639

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33549297A Expired - Fee Related JP3921288B2 (en) 1997-03-14 1997-12-05 Computer-readable storage medium storing language processing apparatus and inline expansion program

Country Status (1)

Country Link
JP (1) JP3921288B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5329832B2 (en) * 2008-04-07 2013-10-30 東芝三菱電機産業システム株式会社 Semiconductor power converter control device

Also Published As

Publication number Publication date
JPH10320213A (en) 1998-12-04

Similar Documents

Publication Publication Date Title
US5606697A (en) Compiler system for language processing program
JPH0769832B2 (en) Method and apparatus for expressing effects and dependencies of programming operations
JPH1196016A (en) Gdmo translator, gdmo translation method and recording medium recording gdmo translator program
JP3921288B2 (en) Computer-readable storage medium storing language processing apparatus and inline expansion program
JPH0869381A (en) Compilation system
JPH0736680A (en) Parallelized program development aid device
JP7059757B2 (en) API processing method, terminal, API processing program
JPH10187461A (en) Language processing system
GB2420638A (en) Method of substituting code fragments in Internal Representation
JPH07121379A (en) Plural languages mixing compiler
JP2977642B2 (en) FORTRAN compilation processor
JP3566602B2 (en) Compilation method and recording medium recording compilation program
JP2001005655A (en) Device and method for aiding development of application generator
JP2000132405A (en) In-line expansion processing device and method
JP3604936B2 (en) Optimization method, optimization device, and recording medium
JPH06242958A (en) Compilation system
JPH06314221A (en) Compiling system
JPH07105014A (en) Symbol processing system for language processing system
JPH1011299A (en) Compiler with delay evaluating function, compiling method, and medium storing compile program
JPH08161179A (en) Method for executing one sentence
Lehmann et al. Algorithm partitioning and optimization for network processors.
JPH06236283A (en) Language processing system
JP2003330731A (en) Project management file generating device
Nilsen TR88-I
JPH0561687A (en) Processing system for compiler

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061003

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061130

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070130

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070219

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110223

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120223

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130223

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130223

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140223

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees