JP2002288004A - プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム - Google Patents

プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム

Info

Publication number
JP2002288004A
JP2002288004A JP2001089034A JP2001089034A JP2002288004A JP 2002288004 A JP2002288004 A JP 2002288004A JP 2001089034 A JP2001089034 A JP 2001089034A JP 2001089034 A JP2001089034 A JP 2001089034A JP 2002288004 A JP2002288004 A JP 2002288004A
Authority
JP
Japan
Prior art keywords
lexical
display
program source
function
token
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.)
Withdrawn
Application number
JP2001089034A
Other languages
English (en)
Inventor
Koji Ito
康治 伊藤
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2001089034A priority Critical patent/JP2002288004A/ja
Publication of JP2002288004A publication Critical patent/JP2002288004A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 相互関係を有しながら複数の関数やその下位
のコードブロックに分散して記述されるようなコードで
あっても、判り易く強調表示、あるいは識別表示でき、
プログラマのコーディング作業を支援できるようにす
る。 【解決手段】 入力プログラムソースファイル1に対し
て字句解析部2および構文解析部3により字句および構
文解析を行ない、その結果に基づき、ユーザ設定手段3
1によりユーザが設定した識別表示モードに応じ、カラ
ー画面表示装置7を用いて、入力プログラムソースファ
イル中の特定字句に関連するコードブロックを他の部分
と識別できるよう、特定字句に関連するコードブロック
のみを表示、特定字句に関連するコードブロックの表示
色を変更、あるいはツリー表示、などの識別表示を行な
う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、C言語などのプロ
グラムソースの表示処理を行なうプログラムソース処理
装置、プログラムソース処理方法、およびプログラムソ
ース処理プログラムに関するものである。
【0002】
【従来の技術】従来より、コンピュータシステムにおい
て、種々のプログラム言語が用いられており、中でもC
言語は、近代的な高級言語の多くの特性を有しながら、
言語仕様がシンプルで効率の良いコーディングが可能で
あることからOSのカーネルや種々のアプリケーション
の記述に広く用いられている。
【0003】
【発明が解決しようとする課題】C言語は関数型の言語
であるとともに、ループや分岐を記述する制御構造を有
するが、その言語仕様には高級なメモリ管理の仕組が含
まれておらず、スタック上に確保される自動変数で不十
分な場合はメモリが必要になるごとにプログラマはma
llocのようなライブラリ関数を用いてメモリを確保
し、その確保した領域が不要となった場合はfreeの
ようなライブラリ関数でその領域を解放する必要があ
る。このような言語仕様により、ガーベージコレクショ
ンなどのメモリ管理機構を経由しないため、効率が良い
反面、プログラミングのミスが発生しやすいという問題
がある。
【0004】プログラムの作成途中や作成後には、その
プログラムの品質を検証するためにさまざまなテストが
行われるが、C言語で記述されたプログラムのバグ、障
害の中で原因個所の特定が困難なものとして、いわゆる
メモリリークがある。このメモリリークは、処理過程で
上記のような手続により確保したメモリを解放せずに実
行が進行する現象をいい、メモリリークを持ったプログ
ラムを何度も実行させることによって利用可能なメモリ
領域が減少し、システムのパフォーマンスが低下し、ま
た最悪の場合にはシステムの暴走を招くことがある。
【0005】したがって、プログラムでは、限られたメ
モリ領域を有効に使用するために必要なときに最適な量
のメモリを確保し、処理が終わった時点でメモリの解放
を行なう。本来、Cプログラマは、プログラムがどのよ
うなケースで終了してもその時点で確保されているメモ
リが解放されるようにプログラムの設計・作成を行わな
くてはいけない。
【0006】しかし、プログラムが複雑になるにつれ、
プログラムの分岐も増加し、プログラムで実行されうる
処理パターンが膨大な量となり、人間が検査できないほ
どになってしまう。
【0007】従来技術におけるメモリリークを検出する
ためのシステムとしては、一般的には、標準的なメモリ
管理関数を(上記のmalloc、freeなど)を特
別なデバッキングメモリ管理関数に置き換える構成のも
のがある。このシステムでは、ソースコード中のメモリ
確保部分で確保されたメモリのアドレスを保持している
ポインタを記録する。この時同時にこの命令が記述され
ているファイル名とライン番号も記録される。そして、
メモリが確保される部分でこのポインタを除去する。プ
ログラムが終了したときにこのリストを参照し、残って
いるポインタがあればそれが、メモリリークと識別され
る。
【0008】しかし、この解決法は、プログラムが複雑
である場合には、さまざまな要因のために不完全なもの
である。たとえば、メモリの確保されたメモリのアドレ
スを保持しているポインタを記録した後にそのポインタ
を他のポインタにコピーして、そのポインタを使用して
メモリの解放を行なう場合、上記の方法では正確なメモ
リ確保解放の対応を検査することができない。有効なメ
モリリーク検出法は、手作業でメモリの確保・解放を検
査することであるが、事実上は困難である。
【0009】また、近代的なCコンパイラでは、かなり
懇切丁寧なエラー/警告メッセージを生成できるものが
あるが、malloc、freeのように、相互関係を
有しながら、複数の関数やその下位のコードブロックに
分散して記述されるような関数呼び出しを解釈し、エラ
ー/警告を行なうことはできない。
【0010】一方で、C言語のようなコンパイラ型の言
語に対応したプログラムエディタや、Cコンパイラの統
合環境アプリケーションでは、予約語やキーワードを色
分け表示したり、特定のプリプロセッサマクロの部分を
除去して選択的な表示を行なうような表示技術が広く用
いられているが、これら従来技術の多くは文字列のパタ
ーンマッチングにより表面的な字句解析を行なうものに
すぎず、メモリリークのようなバグを回避すべくプログ
ラマを支援できるような表示は行なえなかった。
【0011】本発明の課題は、C言語のようなプログラ
ムの処理系において、相互関係を有しながら複数の関数
やその下位のコードブロックに分散して記述されるよう
なコードであっても、判り易く強調表示、あるいは識別
表示でき、プログラマのコーディング作業を支援し、メ
モリリークのようなバグを未然に回避し、また、容易に
発見できるようにすることにある。
【0012】
【課題を解決するための手段】上記の課題を解決するた
め、本発明によれば、C言語などのプログラムソースの
表示処理を行なうプログラムソース処理装置、プログラ
ムソース処理方法、およびプログラムソース処理プログ
ラムにおいて、入力プログラムソースファイルの字句解
析および構文解析に基づき、ユーザが設定した識別表示
モードに応じて、入力プログラムソースファイル中の特
定字句に関連するコードブロックを他の部分と識別でき
るよう識別表示する構成を採用した。
【0013】
【発明の実施の形態】以下、添付図面を参照して、本発
明の実施形態を詳細に説明する。
【0014】図1は、本発明によるプログラム処理系の
ハードウェアおよびソフトウェアから成るシステムの全
体構成を示している。このシステムは本発明のようなC
開発環境の専用ハードウェアとして、あるいは、コンピ
ュータシステム(ワークステーション、パーソナルコン
ピュータなど)のハードウェア上においてプログラムエ
ディタや、Cコンパイラの統合環境アプリケーションの
ソフトウェアとして実装することができる。
【0015】図1において符号1は、C言語プログラム
ソースコードで、このC言語プログラムソースコード1
はコンピュータシステムのハードディスクなどの外部記
憶装置に格納される。
【0016】本発明の処理手段、すなわち、字句解析部
2、構文解析部3、プログラム表示処理部6、関数参照
関係テーブル生成手段12、出力ファイル生成手段13
は全てコンピュータシステムのCPU101のプログラ
ム処理により実現される。これらの手段は実際にはCP
U101の処理プログラムとして記述され、メモリ(R
AM、あるいはROM)102上に展開された状態で実
行される。
【0017】図1では、本発明の処理プログラムを格納
するメモリ102としては、RAM、あるいはROMを
例示しているが、仮想記憶機構上に存在してもよく、ま
た、実行の前段階ではハードディスク、フロッピー(登
録商標)ディスク、あるいはMOやCD−ROMなどの
ような外部記憶装置、要するにコンピュータ読み取り可
能な記憶媒体に格納しておくことができる。また、本発
明の処理プログラムはネットワークを介してダウンロー
ドされるものであってもよい。
【0018】本発明の処理過程では、符号4および5で
示す中間出力ファイルが生成される。このうち、符号4
は関数の参照関係をツリー状に表したファイル、5は必
要な情報のみを含んだC言語プログラムソースである。
なお、これらの中間出力ファイルは、物理的にOSのフ
ァイルシステム上でファイル名を有するファイルである
ことを要せず、たとえば(名前付き)パイプやソケット
のような疑似的なファイルであってもかまわない。
【0019】本発明では、C言語プログラムソース1か
ら字句解析部2および構文解析部3の処理を経て生成さ
れたこれらのファイル4、5に基づき、プログラム表示
処理部6が表示制御手段14を用いてCRT/LCDデ
ィスプレイなどから構成されたカラー画面表示装置7に
表示を行なう。
【0020】本発明では、表面的な字句解析を行なうだ
けでなく、つまり、字句解析部2のみならず構文解析部
3による構文解析を行ない、ファイル4、5を生成する
ことにより、複数の関数やその下位のコードブロックに
分散して記述されるようなコードであっても、判り易く
識別表示(たとえば後述のような選択表示や色分け表
示)でき、プログラマのコーディング作業を支援できる
ようにする。
【0021】また、表示の態様は、ユーザ設定手段31
によりカスタマイズできるようにする。ユーザ設定手段
31はキーボード、上記のカラー画面表示装置7、ある
いはマウスなどのポインティングデバイスなどのハード
ウェアを用いて構成され、適当なメニュー選択を行なう
ことによりカラー画面表示装置7におけるプログラム表
示の態様を制御する。
【0022】次に、図1の字句解析部2、構文解析部
3、関数参照テーブル生成手段12、出力ファイル生成
手段13の構成を説明する。
【0023】字句解析部2は、字句抽出手段8および字
句テーブルリスト作成手段9から構成される。
【0024】本実施形態では、C言語プログラムの処理
を実施形態としているが、ここでいう字句とはC言語で
いうトークンで、プログラムの構成要素の最小単位を成
す。
【0025】C言語のトークンとはCプログラムの解釈
上の意味のある文字または、文字列のことで、図12に
示すように演算子、分離子、識別子、予約語、定数など
から構成される。なお、図12では最小限のトークンの
みを示しており、「+」や「−」、「&」、「|」など
のトークンについては「++」や「−−」、「&&」、
「||」などのように重ねて用いられるものもあり(詳
細については、公知のC言語仕様書などを参照)、これ
らの字句の図示は煩雑さを避けるため省略してある。
【0026】上記のようなトークンを用いて、C言語プ
ログラムソース1は、たとえば、図10、図11の左側
に示すように記述される。図1の字句解析部2はC言語
プログラムソース1を入力し、字句抽出手段8により字
句への分解を行ない、字句テーブルリスト生成手段9に
より字句テーブルリスト(図2:後述)を生成する。
【0027】ここで、「リスト」とは、コンピュータプ
ログラム処理で用いられるデータ構造の一つで、任意の
テーブルが次のテーブルヘのポインタを保持する形で構
成される。これにより動的にメモリを確保しデータを保
持することができる。
【0028】次に、構文解析部3により、このデータに
対してC言語の文法に基づいてデータの解析を行い必要
な情報のみを抽出し、関数の参照関係をツリー状に表わ
したファイル4と必要な情報のみを含んだC言語プログ
ラムソースコードファイル5を出力する。構文解析部3
は関数定義部・実行部抽出手段10、表示字句抽出手段
11、および出力ファイル生成手段13から構成され
る。
【0029】関数参照テーブル生成手段12は関数参照
関係テーブル(図3:後述)および関数名テーブル(図
4:後述)を生成し、必要な情報のみを含んだC言語プ
ログラムソースコードファイル5を出力する際に、これ
ら関数参照関係テーブル、および関数名テーブルが用い
られる。
【0030】上述の各テーブルは、もちろんメモリ10
2上の領域に必要に応じて生成される。
【0031】次に、図5により字句解析部2の字句抽出
手段8の処理を説明する。字句抽出手段8は、入力され
たC言語プログラムソース1を解析しC言語の字句(ト
ークン)を1つづつ抽出し、抽出した各字句ごとに1つ
の字句テーブル(図2)を生成する。
【0032】この時、図2に示すように、字句テーブル
には、トークン行番号81、行内オフセット82、トー
クン属性1コード83、トークン属性2コード84、文
字列実体[トークン]85、表示スイッチ86、字句の階
層の深さ87、次の字句テーブルへのポインタ88の各
スロットが生成される。
【0033】トークン行番号81はその字句(たとえば
図5の「if」)が現われたC言語プログラムソース1
中の行番号、行内オフセット82は、その字句の行中の
オフセット(カラム位置)である。
【0034】トークン属性1コード83は、メモリ10
2にあらかじめ用意した卜ークン属性1コードデータベ
ース15を参照し、データベースに登録されている文字
列と現在のトークンを比較し該当するトークンがデータ
ベースに存在すればそのトークン属性コード1を字句テ
ーブルのトークン属性コード1に設定する。卜ークン属
性1コードデータベース15で識別すべき属性は、図1
2の演算子、分離子、識別子、予約語、定数などの属性
である。これらの属性に割り当てるべき実際のトークン
属性コード1は任意に定めておけばよい。
【0035】一方、トークン属性2コード84は、後述
のようにその字句が関数定義なのか、実行部(関数中の
コード)なのかを識別するために用いられるもので、関
数定義部・実行部抽出手段10により設定される。
【0036】文字列実体[トークン]85は、C言語プロ
グラムソースから情報を決定し、設定することができ
る。図5の例では「if」の文字列そのものが字句テー
ブル80内に格納される。
【0037】表示スイッチ86は、この字句を表示する
かどうかの制御に用いられる。字句の階層の深さ87
は、C言語プログラムソース1中でこのテーブルに対応
した字句が存在するネスト中の階層位置である。C言語
の場合、関数定義の羅列としてコードが記述され、関数
中には「{」、「}」(ブレース)でネストしたコード
階層を定義することができる。関数定義
の「{」、「}」(ブレース)を最上位階層とすると、
テーブルに対応した字句が存在する階層レベルは、関数
定義の「{」を読み取ってからその字句を読み取るまで
に「{」をいくつ読んだかを計数するカウンタを用いる
(ただし、「}」を読んだ場合は同カウンタの数をデク
リメントする)ことにより決定することができる。ポイ
ンタ88については、以下の説明を参照されたい。
【0038】次に図6により、字句テーブルリスト作成
手段9の処理を説明する。字句テーブルリスト作成手段
9の処理は、図5の字句抽出処理と同期して順次実行す
ることができる。たとえば、字句テーブル801を1つ
既に生成しており、続いて字句テーブル802を生成し
た時に字句テーブル801のポインタ88として字句テ
ーブル802の先頭アドレスを格納する。
【0039】字句抽出手段8、字句テーブルリスト作成
手段9は、上記の一連の処理をC言語プログラムソース
が終わるまで繰り返す。
【0040】字句抽出手段8、字句テーブルリスト作成
手段9から成る字句解析部は、C言語プログラム1を字
句ごとに、テーブルを作成しそれをリスト構造(図6、
あるいは図9の字句テーブル800)にして保持する。
【0041】関数定義部・実行部抽出手段10、表示字
句抽出手段11、出力ファイル生成手段13から成る構
文解析部では、このリストを最初から読み込み、C言語
の文法に基づいて解析を行なう。
【0042】このとき、関数定義部・実行部抽出手段1
0、表示字句抽出手段11は、リスト構造のC言語プロ
グラムソースを読み込み、まず字句(卜ークン)テーブ
ルの中のトークン属性1コード83を参照し、所定の処
理を行い、次に字句テーブルの次のテーブルヘのポイン
タを参照して、次の字句テーブルに処理を移す。この一
連の処理をリストの最後まで繰り返す。
【0043】ここで、構文解析の説明を深めるため、C
言語プログラムの構成を説明することにする。
【0044】周知のように、C言語プログラムは関数単
位で構成され、この「関数」とは、ある1つのまとまっ
た仕事を実行する自己完結したコードブロックをいう
(たとえば、図7のサンプルC言語プログラム16)。
【0045】一般には、main()という関数でプロ
グラムの実行が開始され、このmain()から他の関
数を呼び出すことにより処理が進められる(たとえば図
10の左側に示すC言語プログラムソース1)。もちろ
ん、呼び出された関数が、他の関数を(あるいは自己を
再帰的に)呼び出すネスト構造であってもよい。関数を
使用するためには、関数の定義を行ない、定義した関数
名をソース中に記載(これが後述の関数実行部である)
することにより、その記載の位置で実際の呼び出しが起
きる。
【0046】図7は、関数名funcAという関数の定
義部分を示している。関数定義部では、任意の関数名
(図7の17)を定義し、それに続く「{」、「}」の
内側に実行したい処理をC言語の命令で記述する。
【0047】図7のサンプルC言語プログラム16で
は、関数funcAおよび関数funcBが定義され、
関数funcBが関数funcAを呼び出している。図
7の符号18は関数funcBが関数funcAを呼び
出すコードで、関数funcAをその関数名(これもト
ークンの1つである)で「参照」している。図示の処理
は関数funcAを引数bで呼び出し、その返り値を自
動変数(short整数)aに代入するものである。こ
のとき、関数funcAは関数funcBに「呼び出さ
れている」関係にあり、また、関数funcBは関数f
uncAを「呼び出している」関係にある。
【0048】図7のサンプルプログラム16では、関数
定義部は符号17の「funcA」関数実行部は符号1
8の「funcA」であるが、この場合、関数定義部・
実行部抽出手段10は、字句として「funcA」17
を読み込むと、該当の字句テーブル80のトークン属性
2コード84として、「関数定義部」である事を示す識
別データを、また、字句として「funcA」18を読
み込むと、該当の字句テーブル80のトークン属性2コ
ード84として、「関数実行部」である事を示す識別デ
ータを、書き込む。
【0049】なお、表示字句抽出手段11により、表示
スイッチ86もこの時決定できるが、表示制御には、前
述のユーザ設定手段31の設定情報が用いられる。たと
えば、ユーザ設定手段31で、図10のような関数の参
照関係ツリー表示モードや、図11のようなメモリ確保
・解放関係のツリー表示モードを指定することにより、
どの字句の表示スイッチ86をオンにするかを決定す
る。
【0050】関数定義部・実行部抽出手段10は、ある
字句が「関数定義部」、「関数実行部」のいずれである
かを決定する場合は、まず字句(トークン)テーブルの
中のトークン属性1コード83を参照し、その属性が識
別子であるかどうかを調べる。そして、所定の範囲のト
ークンのテーブルまで参照を行いC言語の文法から、そ
の識別子が関数の実行部であるのか、関数の定義部であ
るのかの判定を行いその結果に応じて上記のトークン属
性2コード84および表示スイッチ86の設定を行な
う。
【0051】より具体的な処理としては、たとえば、あ
る識別子が「関数定義部」か否かを決定する条件として
は字句の階層の深さ87を用いることができる。たとえ
ば、図10に明らかなように、関数定義部(図10の場
合、main、funcA、funcB、funcC)
は{}のネストレベルの最上位に位置しており、このネ
ストレベルの最上位に現われる識別子は関数定義部と検
出することができる(実際には、ネストレベルの最上位
に位置する字句は外部変数定義ないしプリプロセッサマ
クロの一部である場合があるが説明を簡単にするため、
ここではこれら外部変数定義ないしプリプロセッサマク
ロは別に適当な方法で既に識別済みであるものとす
る)。
【0052】また、「関数実行部」か否かを決定する条
件としても字句の階層の深さ87を用いることができ
る。この場合は、まず、該当の字句がネストレベルの最
上位に位置「しない」ことが条件とされる。さらに、識
別子には変数名が含まれているので(図12)、変数名
を排除する必要があるが、関数名の場合はその字句に分
離子「(」が後続するので、この「(」を検出すればよ
い(「(」に先行する字句には「if」、「for」な
どの予約語もあるが、これらの予約語は図12のトーク
ン分類によれば既にトークン属性1コード83として分
類済みであるので、この「識別子」のトークン属性2コ
ード84を決定する段階では考慮する必要がない)。
【0053】ここで図8に表示字句抽出手段11の処理
を示しておく。表示字句抽出手段11の実装例の1つで
は、参照している字句テーブルが、図8のサンプルC言
語プログラム19の一点鎖線の囲み内の破線部の関数定
義部内部20にある場合のみ実行される。
【0054】関数定義部内部20では、参照している字
句テーブル内スロット属性コード1が識別子である場合
には、その字句テーブルのスロット文字列実体85を参
照し、あらかじめ登録しておいた表示字句データベース
21を参照し、ユーザーがあらかじめ設定した文字列と
一致する場合には同字句テーブルのスロット表示スイッ
チの設定を行なう。
【0055】表示字句データベース21としては、たと
えばユーザ設定手段31により選択可能な複数の表示字
句データベースを用意しておけばよい。
【0056】たとえば本実施形態では、メモリの確保・
解放関係を明確に表示するために、表示字句データベー
ス21の1つとして (1)メモリの確保(malloc)、解放関数(fr
ee) (2)return、goto、break、cont
inue 等のジャンプ命令、を表示字句データベースとしてあら
かじめ用意しておく(後述の図11のメモリ確保・解放
関係のツリー表示モードに対応)。
【0057】また、図10のような関数の参照関係ツリ
ー表示モードに対応して、上記のような「関数定義
部」、「関数実行部」を検出可能な表示字句データベー
ス21を用意しておく。
【0058】構文解析部3では、関数定義部・実行部抽
出手段10の処理、表示字句抽出手段11の処理、出力
ファイル13の処理を経て、必要な情報のみを表示する
設定が行われたC言語プログラムソースコードファイル
5を出力することができる。
【0059】このファイル5は、図11のメモリ確保・
解放関係のツリー表示モードに対応した出力ファイル
で、たとえば、図11の右側に示すような内容となる
(後述)。
【0060】次に、図9に関数参照テーブル生成手段1
2の処理を示す。関数参照テーブル生成手段12による
解析は、主に図10のような関数の参照関係ツリー表示
モードに用いられるもので、図9の関数参照関係テーブ
ル120、および関数名テーブル1210を用いる。関
数参照関係テーブル120、および関数名テーブル12
10の構成はそれぞれ図3、図4に示してある。
【0061】関数参照関係テーブル生成手段12では、
前述の字句解析部2、構文解析部3によって生成され
た、リストで保存されたC言語プログラムソース、およ
び、その各字句テーブルの各スロットの内容を参照しな
がら関数参照関係テーブルの作成を行なう。
【0062】具体的には、図9に示すように各字句テー
ブルの属性コード1と属性コード2を参照しながら字句
テーブルリスト800に変換されたC言語プログラムソ
ースの字句テーブル80を1つずつ読み込み、それらの
トークン属性1コード83、トークン属性2コード84
が関数の定義部17を示すものであれば、新たな関数参
照関係テーブル120を作成し、この時の字句テーブル
の文字列実体[トークン]85の内容を関数参照関係テー
ブル120の文字列実体[関数名]123としてコピー
するとともに、ハッシュテーブル127にそのアドレス
を保存する。また、字句テーブルのポインタ125のフ
ィールドも生成する。関数参照関係テーブル120は上
記のようにして字句テーブル80の1つ毎に作成され、
字句テーブル80の場合と同様にリンクトリストとして
メモリ102に格納される(関数参照関係テーブルへの
ポインタ126を用いてリンクを行なう)。
【0063】このとき、関数参照関係テーブル120の
アドレスをハッシュテーブル127のどのスロットに保
存するかは、その時の字句テーブルの文字列実体から特
定演算により得られるキーによって決定される。ハッシ
ュテーブル127は、たとえば128(あるいは256
スロット)程度のサイズを有し、その各スロットは上記
の特定演算により得られるキーの個々に対応する。
【0064】たとえば、ある字句テーブル80の文字列
実体を構成する各キャラクタコード(通常0〜127の
範囲のASCIIコード)を数値として加算し(「i
f」の場合は「i」と「f」の文字コード0x69と0
x66を加算する)、それを127で除した余り(「i
f」の場合0x2B)をキーとすることができ、このキ
ーに対応したスロットにこの字句テーブル80のアドレ
スを登録する。
【0065】このような構成により、字句の文字列から
ハッシュテーブル127を検索する場合は、字句の文字
列のキーを求め、このキーに該当するハッシュテーブル
127のスロットのみを検索すればよく、ある文字列
(たとえば関数名)を文字列実体として有する字句テー
ブル80を高速に検索することができる。
【0066】次に関数定義部内部20のC言語プログラ
ムソースの字句(卜ークン)を読み込んでいき、そのト
ークン属性1コード83、トークン属性2コード84が
関数実行部18であれば、新たに呼び出す関数名テーブ
ル1210aを作成し、字句テーブルの文字列実体[卜
ークン]スロット85の内容を呼び出す関数名テーブル
1210a(あるいは1210c)の文字列実体[関数
名]1211にコピーする。そのアドレスを関数参照関
係テーブル120の関数名テーブルヘのポインタ[呼び
出す関数]121に保持する。
【0067】この処理をソースコード中のすべての関数
定義部の数だけ行なうことにより、定義された関数が他
のどの関数を呼んでいるのかという情報を全て保持する
事ができる。このような処理を終了すると、対象となる
関数の関数名の文字列をキーとしハッシュテーブル12
7につながれている関数参照関係テーブルにアクセスす
れば、得られた関数参照関係テーブル120の各スロッ
トの内容を参照することで、その関数がどの関数を呼び
出しているのかの情報を得ることができる。
【0068】また、上記同様にして、関数参照関係テー
ブル120の関数名テーブルヘのポインタ[呼ばれる関
数]122を生成する。これは、ある任意の関数がどの
関数に呼び出されているのかの情報を得られるようにす
るためである。具体的には、ある任意の関数参照関係テ
ーブル120に対して、その他すべての関数参照関係テ
ーブル120の呼び出している関数を検索し、その両者
が一致した場合には、新たに、呼ばれる関数名テーブル
1210bを作成し、その時の文字列実体[関数名]1
211をコピーする。この処理をハッシュテーブル12
7に登録されているすべての関数参照テーブルに関して
行なう。
【0069】このような処理を行って作成されたハッシ
ュテーブルを参照することにより、すべての関数の参照
関係を参照することができ、関数参照関係テーブル生成
手段12、出力ファイル生成手段13を経て関数の参照
関係を記述したファイル4を出力することができる。
【0070】プログラム表示処理部6は、表示制御手段
14の制御により、必要な情報のみを表示する設定が行
われたC言語プログラムソースファイル5、関数の参照
関係を記述したファイル4をカラー画面表示装置7に表
示する。このとき、各字句テーブル80の表示スイッチ
86が参照され、その字句を表示すべきか否かが決定さ
れる。
【0071】図10は、関数の参照関係を記述したファ
イル4の表示結果を示している。本実施形態によれば、
ユーザ設定手段31により関数の参照関係ツリー表示モ
ードを指定すると、図10のように、C言語プログラム
ソース中の関数の参照関係をツリー形態で明瞭に表示す
ることができる(図10の70a)。
【0072】図11は、必要な情報のみを表示する設定
が行われたC言語プログラムソースファイル5の表示結
果を示している。本実施形態において、ユーザ設定手段
31によりメモリ確保・解放関係のツリー表示モードを
指定すると、メモリ確保・解放関数の実行部部分のみを
表示することができる。この表示例では、関数実行部を
含む「{」、および「}」で囲まれたコードブロックの
みを表示している。このとき、関数実行部のコードの直
上位のコードブロックのみを表示する方法も考えられる
が、関数定義のコードブロックまでを表示している。
【0073】このように表示すべきメモリ確保・解放関
数の実行部部分を含むコードブロックのみを抽出するに
は、たとえば図13のようなアルゴリズムを用いること
ができる。ここでは、字句テーブルの階層の深さ87
(図2)の情報を用いる。たとえば、図11において、
main関数の最初の変数定義を除くと、関数の直下位
のコードブロックは3つのif文から構成され、メモリ
確保・解放関数malloc、freeを含むのは最初
のif文と最後のif文の2つのコードブロックのみで
ある。そして、最初のif文はmallocを含んでい
るが、最後のif文はfreeをさらにネストしたif
文の中に含む。
【0074】malloc、freeのような字句に対
応する字句テーブルでは前述のようにして既にこれらの
字句を表示するように表示スイッチが決まっているの
で、図11のようにメモリ確保・解放関数を含む制御構
造を表示するには、字句テーブルリスト800を先頭か
ら走査し、malloc、freeのような字句の字句
テーブル80を検出したら(図13:ステップS7、S
1)、その位置から階層の深さ87(図2)の情報(ネ
ストレベル)を参照しつつ字句テーブルリスト800
(図6)を前方および後方に走査(S2、S6)し、i
f、for、whil
e、「{」、「}」、「(」、「)」などの予約語、演
算子、分離子から成る制御文の先頭と後端を検出し(S
3、S8)、制御文の先頭と後端を構成する字句の表示
スイッチ86をオンに変更する(S4、S9)。その過
程で現れた同一ネストレベルのメモリ確保・解放の関数
実行部ではない別の文(たとえば図11の最後のif文
のa=a+1;)は無視し、表示しないようにする。そ
して、字句テーブルリスト800(図6)の走査は、関
数定義のネストレベルまで行なう(S5、S10)。
【0075】このような処理を行なうことにより、図1
1の符号70bのようにメモリ確保・解放の関数(ma
lloc、およびfree)実行部部分のコードブロッ
クのみを表示することができる。
【0076】図11のような表示(識別表示)を行なう
ことにより、ユーザであるプログラマは当該Cソース中
のメモリ確保・解放の関数(malloc、およびfr
ee)実行部部分がどのように記述されているかを容易
に概観でき、mallocに対応するfreeが欠けて
いるなどのコーディングの欠陥を容易に発見することが
できる。
【0077】なお、図13の処理では、同一ネストレベ
ルの識別表示を目的とする文とは異なる文(図11にお
いては、メモリ確保・解放の関数実行部ではない文:最
後のif文のa=a+1;)は無視し、表示しないよう
にしているが、この文を表示するようにしてもよい。こ
の場合は、図13のステップS2〜S5およびS6〜S
10の2つのループ中を実行している間、適当なフラグ
を立て、このフラグがオンになっている間に遭遇した字
句の表示スイッチ86をオンにすればよい。また、同一
ネストレベルの識別表示を目的とする文とは異なる文を
表示するか否かも、ユーザ設定手段31により設定でき
るようにしておくと便利である。
【0078】以上では、識別表示を目的とする文がメモ
リ確保・解放の関数実行部である場合を例示したが、表
示字句抽出手段11の表示字句データベース21にはメ
モリの確保解放命令(malloc、free)以外に
も、for、while、return、goto、b
reak、continueなどの字句を登録すること
ができ、この登録文字列を変更することで表示する内容
の変更を容易に行なうことができる。
【0079】もちろん、本発明を実現するプログラム製
品(あるいは専用ハードウェア)の表示字句データベー
ス21には、デフォルトのモード(たとえば上記の関数
の参照関係ツリー表示モード、メモリ確保・解放関係の
ツリー表示モード)に対応した字句を登録しておけばよ
く、また、ユーザ設定手段31により選択表示すべき字
句を自由に登録できるようにし、ユーザが需要に応じて
プログラムソース表示モードを定義できるようにしてお
くと非常に有用である。
【0080】たとえば、ユーザ設定手段31により上記
の関数の参照関係ツリー表示モード、メモリ確保・解放
関係のツリー表示モードに加えて、「ループ関係表示モ
ード」のようなモードを設定し、return、got
o、break、continueなどのような制御文
に対応した字句を表示字句データベース21に登録し、
forあるいはwhileループ中のreturn、g
oto、break、continueなどのような制
御文の実行部の上位コードブロックのみを図11と同様
に選択表示することが考えられる。
【0081】用途によっては、forあるいはwhil
eループは、表示装置の画面に表示しきれないような長
大なものを書くことが避けられない場合が往々にしてあ
り、そのようなループを誤まりなく記述し、またデバッ
グするのは容易ではないが、上記のような「ループ関係
表示モード」によれば、ループ中の分岐を制御するコー
ドの検証、およびデバッグを極めて容易に行なうことが
できる。
【0082】以上では、該当の字句(メモリの確保解放
命令など)のみを表示する選択表示により、特定のコー
ドの識別表示を行なう例を示したが、出力ファイル生成
手段13では該当字句の表示スイッチとして、非表示/
表示の制御情報だけではなくその表示色や表示輝度の情
報を付加することができる。これにより、該当のコード
のみを特定の表示色(表示輝度)で表示する識別表示を
行なうことができ、上記と同様の目的を達成することが
できる。この場合は、他のコードが表示上で消えないの
で、プログラムの検証上、該当のコード(メモリの確保
解放命令など)以外のコードとの関係が重要である場合
などに有用である。
【0083】もちろん、表示スイッチとして、非表示/
表示の制御情報を用いるか、表示色(あるいは表示輝
度)の情報を用いるかなどもユーザ設定手段31により
設定できるようにしておくと、より柔軟な解析システム
を構成することができる。
【0084】なお、字句テーブル80にはその字句のC
言語プログラムソースでの位置情報(行番号や行オフセ
ット)が含まれているので、これらの情報を出力ファイ
ル5に付加し、表示させることができる。たとえば、行
番号は画面の左端に表示できるし、ステータス表示部な
どを設ける構成においては、カーソル直近の該当字句の
行番号や行オフセットをステータス表示部に表示させる
ことができる。
【0085】以上では説明を容易にするために、解析対
象のCプログラムが複数ファイルに渡る場合を省略した
が、図3の関数参照関係テーブル120には文字列実体
[ファイル名]124が含まれているので、複数のソー
スファイルについて字句テーブルリスト800および関
数参照関係テーブル120のリストを生成するととも
に、単一のハッシュテーブル127へ登録を行ない、そ
の際、文字列実体[ファイル名]124に当該字句の含
まれるファイル名を格納しておけば、関数参照関係テー
ブル120のリストを探索する時、たとえ別のファイル
に含まれる関数であっても呼び出す/呼び出される関数
を発見することができる。解析対象のCプログラムが複
数ファイルに渡る場合には、図10のような関数名の表
示のみではなく、関数名とともにその関数が定義された
ファイル名を表示するとよい。たとえば図10の関数f
uncCが別ファイルで定義されている場合には「fu
ncC(ファイル名)」のような表示を行なう。
【0086】本実施形態ではCプログラムを例示してい
るが、本発明は、C言語に限定して用いられるものでは
なく、本発明の字句解析、構文解析、および識別表示技
術はpascalなど類似の言語の開発環境(ハードウ
ェアおよびソフトウェア)に実施できるのはいうまでも
ない。
【0087】
【発明の効果】以上の説明から明らかなように、本発明
によれば、C言語などのプログラムソースの表示処理を
行なうプログラムソース処理装置、プログラムソース処
理方法、およびプログラムソース処理プログラムにおい
て、入力プログラムソースファイルの字句解析および構
文解析に基づき、ユーザが設定した識別表示モードに応
じて、入力プログラムソースファイル中の特定字句に関
連するコードブロックを他の部分と識別できるよう識別
表示する構成を採用しているので、相互関係を有しなが
ら複数の関数やその下位のコードブロックに分散して記
述されるようなプログラムコードであっても、判り易く
強調表示、あるいは識別表示でき、プログラマのコーデ
ィング作業を支援し、メモリリークのようなバグを未然
に回避し、また、容易に発見できる、という優れた効果
が得られる。
【図面の簡単な説明】
【図1】本発明のプログラムソース処理の全体の流れを
示した説明図である。
【図2】本発明で用いられる字句テーブルの一例を示し
た説明図である。
【図3】本発明で用いられる関数参照関係テーブルの一
例を示した説明図である。
【図4】本発明で用いられる関数名テーブルの一例を示
した説明図である。
【図5】図1の字句抽出手段の処理を示した説明図であ
る。
【図6】図1の字句テーブルリスト作成手段の処理を示
した説明図である。
【図7】図1の関数定義部・実行部抽出手段の処理を示
した説明図である。
【図8】図1の表示字句抽出手段の処理を示した説明図
である。
【図9】図1の関数参照関係テーブル生成手段の処理を
示した説明図である。
【図10】本発明による関数の参照関係の表示の例を示
した説明図である。
【図11】本発明によるメモリ確保・解放関係のツリー
表示の例を示した説明図である。
【図12】C言語の字句の分類を示した説明図である。
【図13】図11の識別表示において用いられるアルゴ
リズムの一例を示したフローチャート図である。
【符号の説明】
1 C言語プログラムソース 2 字句解析部 3 構文解析部 4 関数の参照関係をツリー状に表したファイル 5 必要な情報のみを含んだC言語プログラムソース 6 プログラム表示処理部 7 カラー画面表示装置 8 字句抽出手段 9 字句テーブルリスト生成手段 10 関数定義部・実行部抽出手段 11 表示字句抽出手段 12 関数参照テーブル生成手段 13 出力ファイル生成手段 14 表示制御手段 15 トークン属性1コードデータベース 16 サンプルC言語プログラム 17 関数定義部 18 関数実行部 19 サンプルC言語プログラム 20 関数定義部内部 21 表示字句データベース 31 ユーザ設定手段 80、800〜802 字句テーブル 81 トークン行番号 82 行内オフセット 84 トークン属性2コード 85 文字列実体[トークン] 86 表示スイッチ 87 字句の階層の深さ 88 次の字句テーブルへのポインタ 101 CPU 120 関数参照関係テーブル 121 関数名テーブルヘのポインタ[呼び出す関数] 122 関数名テーブルヘのポインタ[呼び出される関
数] 123 文字列実体[関数名] 124 文字列実体[ファイル名] 125 字句テーブルのポインタ 127 ハッシュテーブル 1210 関数名テーブル 1210a〜1210c 関数名テーブル 1211 文字列実体[関数名]

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 プログラムソースファイルを入力する入
    力手段と、 プログラムソースファイル中の字句解析を行なう字句解
    析手段と、 前記字句が構成する構文の構文解析を行なう構文解析手
    段と、 ユーザが特定字句の識別表示モードを設定するユーザ設
    定手段と、 前記字句解析手段による字句解析および前記構文解析手
    段による構文解析に基づき、前記ユーザ設定手段により
    ユーザが設定した識別表示モードに応じて、前記入力手
    段から入力したプログラムソースファイル中の前記特定
    字句に関連するコードブロックを他の部分と識別できる
    よう識別表示する表示制御手段を有することを特徴とす
    るプログラムソース処理装置。
  2. 【請求項2】 前記特定字句がC言語におけるメモリ確
    保および解放関数名であることを特徴とする請求項1に
    記載のプログラムソース処理装置。
  3. 【請求項3】 前記特定字句がC言語における関数定義
    を構成する字句であることを特徴とする請求項1に記載
    のプログラムソース処理装置。
  4. 【請求項4】 前記識別表示が、前記特定字句に関連す
    るコードブロックのみを表示し、他の部分の表示を省略
    する処理であることを特徴とする請求項1に記載のプロ
    グラムソース処理装置。
  5. 【請求項5】 前記識別表示が、前記特定字句に関連す
    るコードブロックの表示色または表示輝度を他の部分の
    表示色または表示輝度と異なるものとする処理であるこ
    とを特徴とする請求項1に記載のプログラムソース処理
    装置。
  6. 【請求項6】 前記識別表示が、前記関数定義を構成す
    る字句のみをツリー表示する処理であることを特徴とす
    る請求項3に記載のプログラムソース処理装置。
  7. 【請求項7】 プログラムソースファイルを入力する入
    力工程と、 プログラムソースファイル中の字句解析を行なう字句解
    析工程と、 前記字句が構成する構文の構文解析を行なう構文解析工
    程と、 ユーザが特定字句の識別表示モードを設定するユーザ設
    定工程と、 前記字句解析工程による字句解析および前記構文解析工
    程による構文解析に基づき、前記ユーザ設定工程により
    ユーザが設定した識別表示モードに応じて、前記入力工
    程から入力したプログラムソースファイル中の前記特定
    字句に関連するコードブロックを他の部分と識別できる
    よう識別表示する表示制御工程を含むことを特徴とする
    プログラムソース処理方法。
  8. 【請求項8】 前記特定字句がC言語におけるメモリ確
    保および解放関数名であることを特徴とする請求項7に
    記載のプログラムソース処理方法。
  9. 【請求項9】 前記特定字句がC言語における関数定義
    を構成する字句であることを特徴とする請求項7に記載
    のプログラムソース処理方法。
  10. 【請求項10】 前記識別表示が、前記特定字句に関連
    するコードブロックのみを表示し、他の部分の表示を省
    略する処理であることを特徴とする請求項7に記載のプ
    ログラムソース処理方法。
  11. 【請求項11】 前記識別表示が、前記特定字句に関連
    するコードブロックの表示色または表示輝度を他の部分
    の表示色または表示輝度と異なるものとする処理である
    ことを特徴とする請求項7に記載のプログラムソース処
    理方法。
  12. 【請求項12】 前記識別表示が、前記関数定義を構成
    する字句のみをツリー表示する処理であることを特徴と
    する請求項9に記載のプログラムソース処理方法。
  13. 【請求項13】 プログラムソースファイルを入力する
    入力工程と、 プログラムソースファイル中の字句解析を行なう字句解
    析工程と、 前記字句が構成する構文の構文解析を行なう構文解析工
    程と、 ユーザが特定字句の識別表示モードを設定するユーザ設
    定工程と、 前記字句解析工程による字句解析および前記構文解析工
    程による構文解析に基づき、前記ユーザ設定工程により
    ユーザが設定した識別表示モードに応じて、前記入力工
    程から入力したプログラムソースファイル中の前記特定
    字句に関連するコードブロックを他の部分と識別できる
    よう識別表示する表示制御工程を含むことを特徴とする
    プログラムソース処理プログラム。
  14. 【請求項14】 前記特定字句がC言語におけるメモリ
    確保および解放関数名であることを特徴とする請求項1
    3に記載のプログラムソース処理プログラム。
  15. 【請求項15】 前記特定字句がC言語における関数定
    義を構成する字句であることを特徴とする請求項13に
    記載のプログラムソース処理プログラム。
  16. 【請求項16】 前記識別表示が、前記特定字句に関連
    するコードブロックのみを表示し、他の部分の表示を省
    略する処理であることを特徴とする請求項13に記載の
    プログラムソース処理プログラム。
  17. 【請求項17】 前記識別表示が、前記特定字句に関連
    するコードブロックの表示色または表示輝度を他の部分
    の表示色または表示輝度と異なるものとする処理である
    ことを特徴とする請求項13に記載のプログラムソース
    処理プログラム。
  18. 【請求項18】 前記識別表示が、前記関数定義を構成
    する字句のみをツリー表示する処理であることを特徴と
    する請求項15に記載のプログラムソース処理プログラ
    ム。
JP2001089034A 2001-03-27 2001-03-27 プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム Withdrawn JP2002288004A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001089034A JP2002288004A (ja) 2001-03-27 2001-03-27 プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001089034A JP2002288004A (ja) 2001-03-27 2001-03-27 プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム

Publications (1)

Publication Number Publication Date
JP2002288004A true JP2002288004A (ja) 2002-10-04

Family

ID=18944026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001089034A Withdrawn JP2002288004A (ja) 2001-03-27 2001-03-27 プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム

Country Status (1)

Country Link
JP (1) JP2002288004A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038394A1 (ja) * 2004-10-04 2006-04-13 Matsushita Electric Industrial Co., Ltd. ソースコード検査器、方法、プログラム及び記憶媒体
JP2007249264A (ja) * 2006-03-13 2007-09-27 Fujitsu Ltd プログラム解析プログラム、プログラム解析方法およびプログラム解析装置
JP2008165522A (ja) * 2006-12-28 2008-07-17 Casio Comput Co Ltd 電子式計算機および計算機制御プログラム
JP2009134462A (ja) * 2007-11-29 2009-06-18 Toshiba Corp デバッグ装置及びデバッグ方法
JP2018156654A (ja) * 2017-03-16 2018-10-04 富士通株式会社 プログラム、情報処理方法、及び情報処理装置
KR102154507B1 (ko) 2019-09-18 2020-09-10 (주)비엠에스 기능성 발열체 및 이를 이용한 변비치료기

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038394A1 (ja) * 2004-10-04 2006-04-13 Matsushita Electric Industrial Co., Ltd. ソースコード検査器、方法、プログラム及び記憶媒体
US8020153B2 (en) 2004-10-04 2011-09-13 Panasonic Corporation Source code checker, source code checking method, program for causing execution of the method, and storage medium for storing the program
JP2007249264A (ja) * 2006-03-13 2007-09-27 Fujitsu Ltd プログラム解析プログラム、プログラム解析方法およびプログラム解析装置
JP2008165522A (ja) * 2006-12-28 2008-07-17 Casio Comput Co Ltd 電子式計算機および計算機制御プログラム
JP2009134462A (ja) * 2007-11-29 2009-06-18 Toshiba Corp デバッグ装置及びデバッグ方法
US8370810B2 (en) 2007-11-29 2013-02-05 Kabushiki Kaisha Toshiba Debugging device and debugging method
JP2018156654A (ja) * 2017-03-16 2018-10-04 富士通株式会社 プログラム、情報処理方法、及び情報処理装置
JP7114959B2 (ja) 2017-03-16 2022-08-09 富士通株式会社 プログラム、情報処理方法、及び情報処理装置
KR102154507B1 (ko) 2019-09-18 2020-09-10 (주)비엠에스 기능성 발열체 및 이를 이용한 변비치료기

Similar Documents

Publication Publication Date Title
JP4448881B2 (ja) コンピュータプログラムを発生する方法及びシステム
JP4195479B2 (ja) インクリメンタル生成システム
US8473901B1 (en) Non-literal representation of programming language code
EP0785510B1 (en) Program debugging system for debugging a program having a graphical user interface
US20060026559A1 (en) Automatic content completion of valid values for method argument variables
JPH0883197A (ja) ソフトウエアプログラムをデバッグする方法およびコンピュータシステム
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
JP5147240B2 (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
KR20190015285A (ko) Cpu 이용 및 코드 리팩토링을 위한 쿼리 최적화기
Ramirez et al. Automatic generation of data conversion programs using a data description language
JP2002288004A (ja) プログラムソース処理装置、プログラムソース処理方法、およびプログラムソース処理プログラム
JP2008282174A (ja) 情報処理装置、情報処理方法、および情報処理プログラム
Koskimies et al. The design of a language processor generator
Lunney et al. Syntax-directed editing
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
Bahlke et al. Context-sensitive editing with PSG environments
JPH06274333A (ja) プログラムの入力支援方法および編集支援方法
JP2006338190A (ja) 実装コード開発システム、及び実装コード開発プログラム
Grigorev et al. String-embedded language support in integrated development environment
JPH07160490A (ja) コーディング支援装置
Smyth et al. Code generation for sequential constructiveness
JP4458491B2 (ja) テストコマンドファイル作成システムと方法およびプログラム
JP2001022808A (ja) 論理回路削減装置ならびに論理シミュレーション方法および装置
JPH0628165A (ja) コーディング規則に基づくコード自動診断装置
JPH1011438A (ja) 単語チェッカ

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20070209

A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080603