(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下に、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【0012】
[実施例に係るインタープリタ実行のシーケンスの一例]
図2は、実施例に係るインタープリタ実行のシーケンスの一例を示す図である。
図2に示すように、インタープリタ圧縮処理は、インタープリタ形式のソースプログラムを字句解析し、字句解析結果を内部コードと関連付け、圧縮符号を割当て、圧縮ファイルに保存する。そして、インタープリタ実行処理は、ソースプログラムを圧縮された状態のままで、内部コード変換を経て、構文解析およびインタープリタの実行を行う。
【0013】
例えば、情報処理装置は、インタープリタ形式のソースプログラムを圧縮する際、当該ソースプログラムに対して、字句解析を行う。ここでいう字句解析とは、未圧縮状態のソースプログラムを単語に分割することをいう。単語には、既に予約されている単語を示す予約語、変数、改行、コメントが含まれる。予約語には、制御文や演算子が含まれる。制御文の一例として、forやwhileが挙げられる。演算子の一例として、+、−、×、/、=が挙げられる。変数には、数値を示す変数(数値変数)、定数、アドレスを示す変数(アドレス変数)が含まれる。数値変数の一例として、int_maxやint_minが挙げられる。定数の一例として、100や1000が挙げられる。アドレス変数の一例として、proc_abcやsub_aが挙げられる。
【0014】
情報処理装置は、字句解析によって分割された単語を、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮する。ここでいう内部コードとは、インタープリタを実行する際に用いられる内部的なコードのことをいう。圧縮辞書に内部コードと圧縮符号とを関連付けることで、圧縮された後のソースプログラムを圧縮された状態のままで、圧縮符号を内部コードに変換することが可能になる。そして、情報処理装置は、圧縮データを記憶領域に記憶する。
【0015】
情報処理装置は、記憶領域に記憶された圧縮データを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて、内部コードに変換する。そして、情報処理装置は、変換された内部コードについて、構文解析およびインタープリタの実行を行う。これにより、インタープリタ形式のソースコードが圧縮された状態で保持される場合に、インタープリタの実行指示から実行終了までの実行速度を向上させることができる。言い換えると、実際のソースプログラムの実行に適した内部コードと、圧縮を目的とした圧縮コード(圧縮符号)とは、必ずしも一致しないので、情報処理装置は、字句解析が完了した状態で、符号割当てと、実行に適した内部コードとの対応関係を圧縮辞書に生成しておく。これにより、情報処理装置は、字句解析により得られたソースプログラムの規則性を、ファイルサイズの縮小と、プログラムの実行のためのコード変換の双方に利用することができる。
【0016】
[実施例に係る圧縮処理の流れ]
図3は、実施例に係る圧縮処理の流れを示す図である。
図3では、インタープリタ形式のソースプログラムには、例えば、「・・・IF A=100 THEN C=B ELSE C=D・・・」というデータが含まれる。
【0017】
図3に示すように、情報処理装置は、インタープリタ形式のソースプログラムに対して、字句解析を行う。例えば、情報処理装置は、ソースプログラムを、「IF」,「A」,「=」,「100」,「THEN」,「C」,「=」,「B」,「ELSE」,「C」,「=」,「D」・・・に分割する。
【0018】
情報処理装置は、分割した単語の名標を属性毎に分類する。ここでいう属性には、例えば、予約語、変数、改行、コメントがある。予約語は、例えば、制御文と演算子とに分けられる。変数は、例えば、数値変数と定数とアドレス変数とに分けられる。ここでは、予約語の制御文には、「IF」、「THEN」、「ELSE」が分類される。予約語の演算子には、「=」が分類される。変数の数値変数には、「A」、「B」、「C」が分類される。変数の定数には、「100」が分類される。
【0019】
情報処理装置は、分類した属性毎の単語の名標を、それぞれ圧縮辞書に対応するケヤキ木を構成する葉に割り当てる。ここでは、予約語の制御文「IF」が、ケヤキ木の3番目の葉に割り当てられたとする。そして、情報処理装置は、3番目の葉の属性の領域に、予約語1(制御文)であることを示すビットを「1」(ON)に設定する。そして、情報処理装置は、3番目の葉の単語へのポインタに、「IF」の実体が記憶された領域へのポインタを設定する。ポインタは、例えば、実体(内容)と内部コードとを対応付ける内部コード対応表の内容を指す。すなわち、かかるポインタは、圧縮符号と内部コードとを関連付ける。
【0020】
情報処理装置は、属性毎の分類に応じて、単語の文字列や記号の出現頻度を集計する。そして、情報処理装置は、属性毎の分類に応じて、出現頻度のより高い単語に対して、より短い圧縮符号を割り当てる。すなわち、情報処理装置は、単語の出現頻度でエントロピー符号化を行う。情報処理装置は、単語に対応する葉の圧縮符号の領域に、単語に割り当てられた圧縮符号を設定する。情報処理装置は、葉の圧縮符号長に単語に割り当てられた圧縮符号の符号長を設定する。
【0021】
情報処理装置は、生成されたケヤキ木を用いて、ソースコードの圧縮符号化を行う。情報処理装置は、圧縮データを圧縮ファイルに格納する。
【0022】
[葉の構造体のデータ構造]
図4は、実施例に係る葉の構造体のデータ構造の一例を示す図である。
図4に示すように、葉の構造体には、葉の標識と、圧縮符号長と、属性と、圧縮符号と、単語へのポインタとが格納される。葉の標識は、葉を一意に識別する情報である。圧縮符号長は、圧縮符号の符号長である。属性は、単語の属性を示す情報である。属性は、8ビット記号(コメント)、改行、予約語1(制御文)、予約語2(演算子)、変数1(数値変数)、変数2(定数)、変数3(アドレス変数)を含む。各属性には、各ビットが対応付けられ、単語の属性に応じて、対応するビットが1(ON)に設定される。
【0023】
[内部コード対応表のデータ構造]
図5は、実施例に係る内部コード対応表のデータ構造の一例を示す図である。
図5に示すように、内部コード対応表は、内容と、バイト長と、内部コードとを対応付けて記憶する。内容は、単語の文字列である。バイト長は、内容のバイト長である。内部コードは、内容に対応付けられる内部コードである。内部コードは、属性毎の分類に応じて、割り当てられる。例えば、属性が予約語1(制御文)である場合には、「01」から割り当てられ、属性が変数1(数値変数)である場合には、「10」から割り当てられ、属性が予約語2(演算子)である場合には、「20」から割り当てられる。一例として、内容が「IF」である場合には、内部コードとして「01」が割り当てられている。なお、内部コード対応表は、予め作成され、記憶される。
【0024】
[圧縮ファイルのブロック構成]
図6は、圧縮ファイルのブロック構成例を示す図である。
図6に示すように、圧縮ファイルは、ヘッダ部と、圧縮符号データとを有する。圧縮符号データは、情報処理装置が生成した各圧縮符号に対応する。ヘッダ部は、例えば、圧縮ファイルの生成に用いられた圧縮アルゴリズムを識別する情報や、圧縮に用いられたパラメータなどの情報を有する。例えば、ヘッダ部には、単語の文字列と、単語の属性と、出現頻度とが対応付けて格納される。これは、情報処理装置がインタープリタを実行する際に、ケヤキ木の生成が必要であるからである。
【0025】
[実施例に係る内部コード変換処理の流れ]
図7は、実施例に係る内部コード変換処理の流れを示す図である。
図7に示すように、情報処理装置は、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成する。例えば、情報処理装置は、単語の文字列を、ケヤキ木を構成する葉に割り当てる。情報処理装置は、葉の属性の領域に、単語の属性を「1」(ON)に設定する。情報処理装置は、葉の単語へのポインタに、内部コード対応表に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。情報処理装置は、葉の圧縮符号に、単語の出現頻度を基に割り当てた圧縮符号を設定し、葉の圧縮符号長に圧縮符号の符号長を設定する。すなわち、情報処理装置は、単語の出現頻度でエントロピー符号化を行い、符号化された圧縮符号を葉の圧縮符号に設定する。
【0026】
情報処理装置は、生成されたケヤキ木を用いて、圧縮ファイルの圧縮符号データの内部コード化を行う。例えば、情報処理装置は、圧縮符号データから順次圧縮符号を読み出す。情報処理装置は、読み出した圧縮符号のビット列と、葉に割り当てられた圧縮符号のビット列とを比較し、読み出した圧縮符号のビット列にヒットする枝に接続される葉を特定する。情報処理装置は、特定した葉の単語へのポインタが指す内容に対応する内部コードを取得する。すなわち、情報処理装置は、読み出した圧縮符号を内部コードに変換する。
【0027】
情報処理装置は、1行毎に、変換された内部コードを用いて、構文解析およびインタープリタの実行を行う。1行には、「改行」から次の「改行」までの間の複数の圧縮符号に対応する内部コードが含まれる。これにより、インタープリタ形式のソースプログラムが圧縮状態で保持される場合に、情報処理装置は、圧縮状態を伸長しなくても、圧縮状態から直接内部コードに変換するので、インタープリタの実行速度を向上させることができる。すなわち、情報処理装置は、インタープリタの実行指示から実行終了までの実行速度を向上させることができる。
【0028】
なお、情報処理装置は、1行毎に、複数の圧縮符号に対応する葉の属性を用いて構文解析を行い、複数の圧縮符号に対応するそれぞれの内部コードを用いてインタープリタの実行を行っても良い。これにより、情報処理装置は、葉の属性を用いて構文解析を行うので、さらに、インタープリタの実行速度を向上させることができる。
【0029】
[情報処理装置の機能構成]
図8は、実施例に係る情報処理装置の機能構成を示すブロック図である。
図8に示すように、この情報処理装置100は、圧縮部200と、実行部300とを有する。
【0030】
圧縮部200は、
図3に示した圧縮処理を実行する処理部である。実行部300は、
図7に示した内部コード変換処理を含むインタープリタを実行する処理部である。記憶部400は、内部コード対応表410を記憶する。内部コード対応表410は、
図5に示したデータ構造と同様であるので、その説明を省略する。
【0031】
[圧縮部の機能構成]
図9は、実施例に係る圧縮部の機能構成を示すブロック図である。
図9に示すように、圧縮部200は、ファイルリード部210、字句解析部220、出現頻度集計部230、ケヤキ木生成部240、圧縮符号化部250およびファイルライト部260を有する。
【0032】
ファイルリード部210は、ファイル内のインタープリタ形式のソースプログラムを読み出す。ファイルリード部210は、読み出したソースプログラムを字句解析部220および圧縮符号化部250に出力する。
【0033】
字句解析部220は、ソースプログラムに対して、字句解析を行う。例えば、字句解析部220は、ソースプログラムを単語毎に分割する。字句解析部220は、分割した単語を属性に分類する。字句解析部220は、属性毎の分類を出現頻度集計部230およびケヤキ木生成部240に出力する。
【0034】
出現頻度集計部230は、属性毎の分類に応じて、分類に属する単語の文字列や記号の出現頻度を集計する。出現頻度集計部230は、属性毎の分類に応じて、集計された出現頻度のより高い単語に対して、より短い圧縮符号を割り当てる。すなわち、出現頻度集計部230は、単語の出現頻度でエントロピー符号化を行う。
【0035】
ケヤキ木生成部240は、属性に応じたケヤキ木を生成する。例えば、ケヤキ木生成部240は、字句解析部220によって分類された属性毎の単語を、ケヤキ木を構成する葉に割り当てる。ケヤキ木生成部240は、単語の属性を、単語の葉に対応する属性の領域に設定する。ケヤキ木生成部240は、単語の文字列を示すポインタを、単語の葉に対応する単語へのポインタに設定する。すなわち、ケヤキ木生成部240は、単語へのポインタに、内部コード対応表410に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。ケヤキ木生成部240は、出現頻度集計部230によって割り当てた圧縮符号を、単語の葉に対応する圧縮符号に設定し、圧縮符号の符号長を、単語の葉に対応する圧縮符号長に設定する。ケヤキ木生成部240は、生成されたケヤキ木を圧縮符号化部250に出力する。
【0036】
圧縮符号化部250は、生成されたケヤキ木を用いて、ソースプログラムの圧縮符号化を行う。圧縮符号化部250は、ソースプログラムの圧縮符号データをファイルライト部260に出力する。
【0037】
ファイルライト部260は、ソースプログラムの圧縮符号データを圧縮ファイルに書き込む。ファイルライト部260は、字句解析部220によって属性毎に分類された単語の文字列および単語の属性を、出現頻度集計部230によって集計された出現頻度とともに、圧縮ファイルのヘッダ部に書き込む。
【0038】
[実行部の機能構成]
図10は、実施例に係る実行部の機能構成を示すブロック図である。
図10に示すように、実行部300は、ファイルリード部310、ケヤキ木生成部320、内部コード変換部330、構文解析部340およびインタープリタ実行部350を有する。
【0039】
ファイルリード部310は、圧縮ファイルの実行指示を受け付けると、実行指示を受け付けた圧縮ファイルを読み出す。ファイルリード部310は、読み出した圧縮ファイルをケヤキ木生成部320および内部コード変換部330に出力する。
【0040】
ケヤキ木生成部320は、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成する。ヘッダ部に記憶された情報には、単語毎の文字列、属性および出現頻度が含まれる。例えば、ケヤキ木生成部320は、単語の文字列を、ケヤキ木を構成する葉に割り当てる。ケヤキ木生成部320は、葉の属性の領域に、単語の属性を「1」(ON)に設定する。ケヤキ木生成部320は、葉の単語へのポインタに、内部コード対応表410に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。ケヤキ木生成部320は、葉の圧縮符号に、単語の出現頻度を基に割り当てられる圧縮符号を設定し、葉の圧縮符号長に圧縮符号の符号長を設定する。すなわち、ケヤキ木生成部320は、単語の出現頻度でエントロピー符号化を行い、符号化された圧縮符号を葉の圧縮符号に設定する。ケヤキ木生成部320は、生成されたケヤキ木を内部コード変換部330に出力する。
【0041】
内部コード変換部330は、生成されたケヤキ木を用いて、圧縮ファイルの圧縮符号データの内部コード化を行う。例えば、内部コード変換部330は、圧縮符号データから順次圧縮符号を読み出す。内部コード変換部330は、読み出した圧縮符号のビット列と、ケヤキ木の葉に割り当てられた圧縮符号のビット列とを比較し、読み出した圧縮符号のビット列にヒットする枝に接続される葉を特定する。内部コード変換部330は、特定した葉の単語へのポインタが示す、内部コード対応表410の内容に対応する内部コードを取得する。すなわち、内部コード変換部330は、読み出した圧縮符号を内部コードに変換する。内部コード変換部330は、変換された内部コードを構文解析部340に出力する。
【0042】
構文解析部340は、1行毎に、変換された内部コードを用いて、構文解析を行う。例えば、構文解析部340は、「改行」の内部コードから次の「改行」の内部コードまでの間の複数の内部コードを用いて、構文解析を行う。構文解析部340は、1行分の複数の内部コードをインタープリタ実行部350に出力する。なお、構文解析部340は、「改行」から次の「改行」までの間の複数の圧縮符号に対応する葉の属性を用いて構文解析を行っても良い。
【0043】
インタープリタ実行部350は、1行分の複数の内部コードを用いて、インタープリタを実行する。なお、インタープリタ実行部350は、1行分の複数の圧縮符号に対応する葉の属性を用いて構文解析を行う場合には、1行分の複数の圧縮符号に対応するそれぞれの内部コードを用いて、インタープリタを実行すれば良い。
【0044】
[圧縮処理のフローチャート]
図11は、実施例に係る圧縮処理のフローチャートの一例を示す図である。
【0045】
まず、情報処理装置100は、ソースプログラムを受け付けたか否かを判定する(ステップS11)。情報処理装置100は、ソースプログラムを受け付けていないと判定した場合には(ステップS11;No)、ソースプログラムを受け付けるまで、判定処理を繰り返す。
【0046】
一方、情報処理装置100は、ソースプログラムを受け付けたと判定した場合には(ステップS11;Yes)、受け付けたソースプログラムに対して、字句解析を行う(ステップS12)。
【0047】
そして、情報処理装置100は、字句解析されたそれぞれの字句(単語)を属性毎に分類する(ステップS13)。情報処理装置100は、属性毎の分類に応じて、分類に属する単語の出現頻度を集計する(ステップS14)。情報処理装置100は、それぞれの単語を、出現頻度に応じて圧縮符号に割り当てる(ステップS15)。すなわち、情報処理装置100は、属性毎の分類に応じて、集計された出現頻度のより高い単語に対して、より短い圧縮符号を割り当てる。
【0048】
そして、情報処理装置100は、字句解析されたそれぞれの単語をケヤキ木の葉に割り当て、割り当てたケヤキ木の葉に、圧縮符号、属性、内部コードへのポインタを設定する(ステップS16)。例えば、情報処理装置100は、それぞれの単語毎に、単語の葉に対応する属性の領域に、単語の属性を設定する。情報処理装置100は、単語の葉に対応する単語へのポインタに、単語の文字列を示すポインタを設定する。すなわち、情報処理装置100は、単語へのポインタに、内部コード対応表410に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。情報処理装置100は、単語の葉に対応する圧縮符号に、出現頻度に応じて割り当てられた圧縮符号を設定し、単語の葉に対応する圧縮符号長に、圧縮符号の符号長を設定する。
【0049】
そして、情報処理装置100は、ケヤキ木を参照して、受け付けたソースプログラムを圧縮符号化する(ステップS17)。
【0050】
そして、情報処理装置100は、ソースプログラムの圧縮符号データを圧縮ファイルに書き込む(ステップS18)。加えて、情報処理装置100は、字句解析されたそれぞれの単語の文字列および属性を、出現頻度とともに、圧縮ファイルのヘッダ部に書き込む。
【0051】
[実行処理のフローチャート]
図12は、実施例に係る圧縮処理のフローチャートの一例を示す図である。
【0052】
図12に示すように、情報処理装置100は、圧縮ファイルを受け付けたか否かを判定する(ステップS21)。情報処理装置100は、圧縮ファイルを受け付けていないと判定した場合には(ステップS21;No)、圧縮ファイルを受け付けるまで、判定処理を繰り返す。
【0053】
一方、情報処理装置100は、圧縮ファイルを受け付けたと判定した場合には(ステップS21;Yes)、ケヤキ木を生成する(ステップS22)。例えば、情報処理装置100は、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成する。
【0054】
そして、情報処理装置100は、圧縮ファイルの圧縮符号データから圧縮符号を読み出す(ステップS23)。情報処理装置100は、生成したケヤキ木を参照し、読み出した圧縮符号にヒットする葉を特定する(ステップS24)。
【0055】
そして、情報処理装置100は、内部コード対応表410を参照し、特定した葉の圧縮符号を葉に紐づく内部コードに変換する(ステップS25)。例えば、情報処理装置100は、特定した葉の単語へのポインタが示す、内部コード対応表410の内容に対応する内部コードを取得する。
【0056】
そして、情報処理装置100は、1行毎に、変換された内部コードをもとに構文解析し、インタープリタを実行する(ステップS26)。例えば、情報処理装置100は、「改行」の内部コードから次の「改行」の内部コードまでの間の複数の内部コードを用いて、構文解析を行う。情報処理装置100は、かかる複数の内部コードを用いて、インタープリタを実行する。なお、情報処理装置100は、1行毎に、圧縮符号に対応する葉の属性をもとに構文解析を行っても良い。
【0057】
そして、情報処理装置100は、圧縮ファイルの圧縮符号データの終端か否かを判定する(ステップS27)。情報処理装置100は、圧縮ファイルの圧縮符号データの終端でないと判定した場合には(ステップS27;No)、次の圧縮符号を読み出すべく、ステップS23に移行する。
【0058】
一方、情報処理装置100は、圧縮ファイルの圧縮符号データの終端であると判定した場合には(ステップS27;Yes)、実行処理を終了する。
【0059】
[実施例の効果]
上記実施例によれば、情報処理装置100は、インタープリタ形式のソースコードに対して、字句解析を行う。情報処理装置100は、字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮する。情報処理装置100は、圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、前記圧縮されたソースコードを前記圧縮辞書に基づいて内部コードに変換する。そして、情報処理装置100は、変換された内部コードに基づいて、順次処理を実行する。かかる構成によれば、情報処理装置100は、圧縮されたソースコードを伸長しなくても、内部コードと圧縮符号とを関連付ける圧縮辞書を用いることで圧縮状態からインタープリタの内部コードに変換できる。この結果、情報処理装置100は、圧縮されたソースコードのインタープリタの実行速度を向上させることができる。
【0060】
また、上記実施例によれば、情報処理装置100は、字句解析が行われた単語毎に、各単語に対応する圧縮符号、属性および内部コードへのポインタを葉に含むツリー構造を生成する。情報処理装置100は、生成されたツリー構造に登録されている単語に対応する属性をもとに、構文解析を実行し、当該単語に対応する内部コードをもとに、インタープリタ処理を実行する。かかる構成によれば、情報処理装置100は、圧縮符号とその属性をすばやく判定できるので、構文解析の高速化を実現できる。
【0061】
また、上記実施例によれば、情報処理装置100は、ソースコードに対して字句解析が行われた単語毎に、属性およびソースコードにおける出現頻度を対応付けて、圧縮ファイルのヘッダ部に格納する。かかる構成によれば、情報処理装置100は、圧縮ファイルのヘッダ部に格納された情報を用いて、インタープリタの実行前にケヤキ木を生成することができる。この結果、情報処理装置100は、ケヤキ木を用いることで、圧縮されたソースコードのインタープリタの実行速度を向上させることができる。
【0062】
[実施例に関連する他の態様]
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【0063】
また、実施例に係る情報処理装置100は、圧縮辞書に対応するツリー構造としてケヤキ木を生成すると説明した。しかしながら、情報処理装置100は、これに限定されず、圧縮辞書に対応するツリー構造としてハフマン木を生成するものとしても良い。すなわち、情報処理装置100は、属性毎の単語を、それぞれ圧縮辞書に対応するハフマン木を構成する葉に割り当て、それぞれの葉に、対応する単語の圧縮符号、属性および単語へのポインタを設定すれば良い。そして、情報処理装置100は、生成されたハフマン木を用いて、圧縮状態のソースコードの内部コード化を行ない、内部コードを用いて、構文解析およびインタープリタの実行を行えば良い。
【0064】
また、実施例に係る情報処理装置100は、ソースプログラムを圧縮する際に、ソースプログラムの圧縮符号データを圧縮ファイルに書き込み、加えて、単語毎に単語の文字列および属性を、出現頻度とともに、圧縮ファイルのヘッダ部に書き込む。そして、情報処理装置100は、圧縮されたソースプログラムを実行する際に、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成し、生成されたケヤキ木を用いて、圧縮ファイルの圧縮符号データの内部コード化を行う。しかしながら、情報処理装置100は、これに限定されず、ソースプログラムを圧縮する際に、ソースプログラムの圧縮符号データを圧縮ファイルに書き込み、加えて、ケヤキ木および内部コード対応表410を圧縮ファイルのトレーラ部に書き込むようにしても良い。これにより、情報処理装置100は、圧縮されたソースプログラムを実行する際に、ケヤキ木を生成する必要がなく、ケヤキ木を読み出すだけでその後の圧縮符号データの内部コード化を行うことができ、さらに、インタープリタの実行速度を向上させることができる。
【0065】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0066】
[情報処理装置のハードウェア構成]
図13は、実施例の情報処理装置のハードウェア構成を示す図である。
図13の例が示すように、コンピュータ500は、各種演算処理を実行するCPU501と、ユーザからのデータ入力を受け付ける入力装置502と、モニタ503とを有する。また、コンピュータ500は、記憶媒体からプログラム等を読み取る媒体読取装置504と、他の装置と接続するためのインターフェース装置505と、他の装置と無線により接続するための無線通信装置506とを有する。また、コンピュータ500は、各種情報を一時記憶するRAM507と、ハードディスク装置508とを有する。また、各装置501〜508は、バス509に接続される。
【0067】
ハードディスク装置508には、例えば
図9に示した字句解析部220、出現頻度集計部230、ケヤキ木生成部240および圧縮符号化部250の各処理部と同様の機能を有する圧縮処理プログラムが記憶される。また、ハードディスク装置508には、例えば
図10に示したケヤキ木生成部320、内部コード変換部330、構文解析部340およびインタープリタ実行部350の各処理部と同様の機能を有する実行処理プログラムが記憶される。また、ハードディスク装置508には、圧縮処理プログラムおよび実行処理プログラムを含む情報処理プログラムを実現するための各種データが記憶される。
【0068】
CPU501は、ハードディスク装置508に記憶された各プログラムを読み出して、RAM507に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ500を、例えば
図9に示した字句解析部220、出現頻度集計部230、ケヤキ木生成部240および圧縮符号化部250として機能させることができる。これらのプログラムは、コンピュータ500を、例えば
図10に示したケヤキ木生成部320、内部コード変換部330、構文解析部340およびインタープリタ実行部350として機能させることができる。
【0069】
なお、上記の情報処理プログラムは、必ずしもハードディスク装置508に記憶されている必要はない。例えば、コンピュータ500が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ500が読み出して実行するようにしてもよい。コンピュータ500が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ500がこれらからプログラムを読み出して実行するようにしてもよい。
【0070】
図14は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ500において、
図14に示すハードウェア群26(501〜509)の制御を行なうOS(オペレーティング・システム)27が動作する。OS27に従った手順でCPU501が動作して、ハードウェア群26の制御・管理が行なわれることにより、アプリケーションプログラム29やミドルウェア28に従った処理がハードウェア群26で実行される。さらに、コンピュータ500において、ミドルウェア28またはアプリケーションプログラム29が、RAM407に読み出されてCPU501により実行される。
【0071】
CPU501により符号化する単語を受け付けた場合、ミドルウェア28またはアプリケーションプログラム29の少なくとも一部に基づく処理を行なうことで、(それらの処理をOS27に基づいてハードウェア群26を制御して)圧縮部200および実行部300の情報処理機能が実現される。情報処理機能は、それぞれアプリケーションプログラム29自体に含まれてもよいし、アプリケーションプログラム29に従って呼び出されることで実行されるミドルウェア28の一部であってもよい。