(57)【要約】  情報処理装置（１００）は、インタープリタ形式のソースコードに対して、字句解析を行い、字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける内部コード対応表（４１０）を用いて圧縮する。情報処理装置（１００）は、圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、圧縮されたソースコードを内部コード対応表（４１０）に基づいて内部コードに変換し、変換された内部コードに基づいて、順次処理を実行することにより、インタープリタ形式のソースコードが圧縮された状態で保持される場合に、ソースコードのインタープリタの実行速度を向上させる。
2016199255.tif 000002
【特許請求の範囲】
【請求項１】
インタープリタ形式のソースコードに対して、字句解析を行う字句解析部と、
前記字句解析部によって字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮する圧縮部と、
前記圧縮部によって圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、前記圧縮されたソースコードを前記圧縮辞書に基づいて内部コードに変換する変換部と、
前記変換部によって変換された内部コードに基づいて、順次処理を実行する実行部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記字句解析が行われた単語毎に、各単語に対応する圧縮符号、属性および内部コードへのポインタを葉に含むツリー構造を生成するツリー構造生成部を有し、
前記実行部は、前記ツリー構造生成部によって生成されたツリー構造に登録されている単語に対応する属性をもとに、構文解析を実行し、当該単語に対応する内部コードをもとに、インタープリタ処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ソースコードに対して前記字句解析が行われた単語毎に属性および前記ソースコードにおける出現頻度を対応付けて、圧縮ファイルのヘッダ部に格納する格納部
を有することを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
コンピュータが、
インタープリタ形式のソースコードに対して、字句解析を行い、
前記字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮し、
圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、前記圧縮されたソースコードを前記圧縮辞書に基づいて内部コードに変換し、
変換された内部コードに基づいて、順次処理を実行する
各処理を実行することを特徴とする情報処理方法。
【請求項５】
コンピュータに、
インタープリタ形式のソースコードに対して、字句解析を行い、
前記字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮し、
圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、前記圧縮されたソースコードを前記圧縮辞書に基づいて内部コードに変換し、
変換された内部コードに基づいて、順次処理を実行する
処理を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置などに関する。
【背景技術】
【０００２】
インタープリタ形式のプログラム言語で記述されたプログラムを実行する際には、情報処理装置は、当該プログラムのソースコードに対して字句解析を行ない、字句解析の結果に応じて内部コードの割り当てを行う。そして、情報処理装置は、割て当てられた内部コードに従って、逐次処理を実行する。【０００３】
また、ソースコードが圧縮された状態で保持されることがある。かかる場合には、圧縮されたインタープリタ形式のソースコードを実行する際には、情報処理装置は、ソースコードの伸長処理を実行してから、字句解析および内部コードの割り当てを行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２９００２１号公報
【特許文献２】特開平５−３２４７３０号公報
【特許文献３】特開平２−１０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、インタープリタ形式のソースコードが圧縮された状態で保持される場合に、プログラムを実行する都度、ソースコードの伸長と字句解析が繰り返されるため、実行指示から実行終了までの処理に時間がかかり、資源が浪費されるという問題がある。【０００６】
ここで、ソースコードが圧縮された状態で保持される場合に、ソースコードの実行指示から実行終了までの処理に時間がかかり、資源が浪費されるという問題について、図１を参照して説明する。図１は、インタープリタ実行のシーケンスを示す参考図である。図１に示すように、情報処理装置は、圧縮された状態で保持されたソースプログラムの圧縮データを全て伸長した伸長データを記憶領域に記憶する。そして、情報処理装置は、記憶領域に記憶された全ての伸長データについて、字句解析および内部コード生成を行い、さらに、生成された内部コードについて、構文解析およびインタープリタの実行を行う。これにより、情報処理装置は、圧縮データ全体の伸長を行ってから伸長後の伸長データに対して字句解析および内部コード生成を行うこととなり、ソースコードの実行指示から実行終了までの処理に時間がかかってしまう。【０００７】
１つの側面では、インタープリタ形式のソースコードのインタープリタの実行を効率化することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、情報処理装置は、インタープリタ形式のソースコードに対して、字句解析を行う字句解析部と、前記字句解析部によって字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮する圧縮部と、前記圧縮部によって圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、前記圧縮されたソースコードを前記圧縮辞書に基づいて内部コードに変換する変換部と、前記変換部によって変換された内部コードに基づいて、順次処理を実行する実行部と、を有する。
【発明の効果】
【０００９】
１つの態様によれば、インタープリタ形式のソースコードのインタープリタの実行速度を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、インタープリタ実行のシーケンスを示す参考図である。
【図２】図２は、実施例に係るインタープリタ実行のシーケンスの一例を示す図である。
【図３】図３は、実施例に係る圧縮処理の流れを示す図である。
【図４】図４は、実施例に係る葉の構造体のデータ構造の一例を示す図である。
【図５】図５は、実施例に係る内部コード対応表のデータ構造の一例を示す図である。
【図６】図６は、圧縮ファイルのブロック構成例を示す図である。
【図７】図７は、実施例に係る内部コード変換処理の流れを示す図である。
【図８】図８は、実施例に係る情報処理装置の機能構成を示すブロック図である。
【図９】図９は、実施例に係る圧縮部の機能構成を示すブロック図である。
【図１０】図１０は、実施例に係る実行部の機能構成を示すブロック図である。
【図１１】図１１は、実施例に係る圧縮処理のフローチャートの一例を示す図である。
【図１２】図１２は、実施例に係る実行処理のフローチャートの一例を示す図である。
【図１３】図１３は、実施例の情報処理装置のハードウェア構成を示す図である。
【図１４】図１４は、コンピュータで動作するプログラムの構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する情報処理装置、情報処理方法および情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【００１２】
［実施例に係るインタープリタ実行のシーケンスの一例］
図２は、実施例に係るインタープリタ実行のシーケンスの一例を示す図である。図２に示すように、インタープリタ圧縮処理は、インタープリタ形式のソースプログラムを字句解析し、字句解析結果を内部コードと関連付け、圧縮符号を割当て、圧縮ファイルに保存する。そして、インタープリタ実行処理は、ソースプログラムを圧縮された状態のままで、内部コード変換を経て、構文解析およびインタープリタの実行を行う。
【００１３】
例えば、情報処理装置は、インタープリタ形式のソースプログラムを圧縮する際、当該ソースプログラムに対して、字句解析を行う。ここでいう字句解析とは、未圧縮状態のソースプログラムを単語に分割することをいう。単語には、既に予約されている単語を示す予約語、変数、改行、コメントが含まれる。予約語には、制御文や演算子が含まれる。制御文の一例として、ｆｏｒやｗｈｉｌｅが挙げられる。演算子の一例として、＋、−、×、／、＝が挙げられる。変数には、数値を示す変数（数値変数）、定数、アドレスを示す変数（アドレス変数）が含まれる。数値変数の一例として、ｉｎｔ＿ｍａｘやｉｎｔ＿ｍｉｎが挙げられる。定数の一例として、１００や１０００が挙げられる。アドレス変数の一例として、ｐｒｏｃ＿ａｂｃやｓｕｂ＿ａが挙げられる。
【００１４】
情報処理装置は、字句解析によって分割された単語を、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮する。ここでいう内部コードとは、インタープリタを実行する際に用いられる内部的なコードのことをいう。圧縮辞書に内部コードと圧縮符号とを関連付けることで、圧縮された後のソースプログラムを圧縮された状態のままで、圧縮符号を内部コードに変換することが可能になる。そして、情報処理装置は、圧縮データを記憶領域に記憶する。
【００１５】
情報処理装置は、記憶領域に記憶された圧縮データを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて、内部コードに変換する。そして、情報処理装置は、変換された内部コードについて、構文解析およびインタープリタの実行を行う。これにより、インタープリタ形式のソースコードが圧縮された状態で保持される場合に、インタープリタの実行指示から実行終了までの実行速度を向上させることができる。言い換えると、実際のソースプログラムの実行に適した内部コードと、圧縮を目的とした圧縮コード（圧縮符号）とは、必ずしも一致しないので、情報処理装置は、字句解析が完了した状態で、符号割当てと、実行に適した内部コードとの対応関係を圧縮辞書に生成しておく。これにより、情報処理装置は、字句解析により得られたソースプログラムの規則性を、ファイルサイズの縮小と、プログラムの実行のためのコード変換の双方に利用することができる。
【００１６】
［実施例に係る圧縮処理の流れ］
図３は、実施例に係る圧縮処理の流れを示す図である。図３では、インタープリタ形式のソースプログラムには、例えば、「・・・ＩＦ  Ａ＝１００  ＴＨＥＮ  Ｃ＝Ｂ  ＥＬＳＥ  Ｃ＝Ｄ・・・」というデータが含まれる。
【００１７】
図３に示すように、情報処理装置は、インタープリタ形式のソースプログラムに対して、字句解析を行う。例えば、情報処理装置は、ソースプログラムを、「ＩＦ」，「Ａ」，「＝」，「１００」，「ＴＨＥＮ」，「Ｃ」，「＝」，「Ｂ」，「ＥＬＳＥ」，「Ｃ」，「＝」，「Ｄ」・・・に分割する。
【００１８】
情報処理装置は、分割した単語の名標を属性毎に分類する。ここでいう属性には、例えば、予約語、変数、改行、コメントがある。予約語は、例えば、制御文と演算子とに分けられる。変数は、例えば、数値変数と定数とアドレス変数とに分けられる。ここでは、予約語の制御文には、「ＩＦ」、「ＴＨＥＮ」、「ＥＬＳＥ」が分類される。予約語の演算子には、「＝」が分類される。変数の数値変数には、「Ａ」、「Ｂ」、「Ｃ」が分類される。変数の定数には、「１００」が分類される。
【００１９】
情報処理装置は、分類した属性毎の単語の名標を、それぞれ圧縮辞書に対応するケヤキ木を構成する葉に割り当てる。ここでは、予約語の制御文「ＩＦ」が、ケヤキ木の３番目の葉に割り当てられたとする。そして、情報処理装置は、３番目の葉の属性の領域に、予約語１（制御文）であることを示すビットを「１」（ＯＮ）に設定する。そして、情報処理装置は、３番目の葉の単語へのポインタに、「ＩＦ」の実体が記憶された領域へのポインタを設定する。ポインタは、例えば、実体（内容）と内部コードとを対応付ける内部コード対応表の内容を指す。すなわち、かかるポインタは、圧縮符号と内部コードとを関連付ける。
【００２０】
情報処理装置は、属性毎の分類に応じて、単語の文字列や記号の出現頻度を集計する。そして、情報処理装置は、属性毎の分類に応じて、出現頻度のより高い単語に対して、より短い圧縮符号を割り当てる。すなわち、情報処理装置は、単語の出現頻度でエントロピー符号化を行う。情報処理装置は、単語に対応する葉の圧縮符号の領域に、単語に割り当てられた圧縮符号を設定する。情報処理装置は、葉の圧縮符号長に単語に割り当てられた圧縮符号の符号長を設定する。
【００２１】
情報処理装置は、生成されたケヤキ木を用いて、ソースコードの圧縮符号化を行う。情報処理装置は、圧縮データを圧縮ファイルに格納する。
【００２２】
［葉の構造体のデータ構造］
図４は、実施例に係る葉の構造体のデータ構造の一例を示す図である。図４に示すように、葉の構造体には、葉の標識と、圧縮符号長と、属性と、圧縮符号と、単語へのポインタとが格納される。葉の標識は、葉を一意に識別する情報である。圧縮符号長は、圧縮符号の符号長である。属性は、単語の属性を示す情報である。属性は、８ビット記号（コメント）、改行、予約語１（制御文）、予約語２（演算子）、変数１（数値変数）、変数２（定数）、変数３（アドレス変数）を含む。各属性には、各ビットが対応付けられ、単語の属性に応じて、対応するビットが１（ＯＮ）に設定される。
【００２３】
［内部コード対応表のデータ構造］
図５は、実施例に係る内部コード対応表のデータ構造の一例を示す図である。図５に示すように、内部コード対応表は、内容と、バイト長と、内部コードとを対応付けて記憶する。内容は、単語の文字列である。バイト長は、内容のバイト長である。内部コードは、内容に対応付けられる内部コードである。内部コードは、属性毎の分類に応じて、割り当てられる。例えば、属性が予約語１（制御文）である場合には、「０１」から割り当てられ、属性が変数１（数値変数）である場合には、「１０」から割り当てられ、属性が予約語２（演算子）である場合には、「２０」から割り当てられる。一例として、内容が「ＩＦ」である場合には、内部コードとして「０１」が割り当てられている。なお、内部コード対応表は、予め作成され、記憶される。
【００２４】
［圧縮ファイルのブロック構成］
図６は、圧縮ファイルのブロック構成例を示す図である。図６に示すように、圧縮ファイルは、ヘッダ部と、圧縮符号データとを有する。圧縮符号データは、情報処理装置が生成した各圧縮符号に対応する。ヘッダ部は、例えば、圧縮ファイルの生成に用いられた圧縮アルゴリズムを識別する情報や、圧縮に用いられたパラメータなどの情報を有する。例えば、ヘッダ部には、単語の文字列と、単語の属性と、出現頻度とが対応付けて格納される。これは、情報処理装置がインタープリタを実行する際に、ケヤキ木の生成が必要であるからである。
【００２５】
［実施例に係る内部コード変換処理の流れ］
図７は、実施例に係る内部コード変換処理の流れを示す図である。図７に示すように、情報処理装置は、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成する。例えば、情報処理装置は、単語の文字列を、ケヤキ木を構成する葉に割り当てる。情報処理装置は、葉の属性の領域に、単語の属性を「１」（ＯＮ）に設定する。情報処理装置は、葉の単語へのポインタに、内部コード対応表に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。情報処理装置は、葉の圧縮符号に、単語の出現頻度を基に割り当てた圧縮符号を設定し、葉の圧縮符号長に圧縮符号の符号長を設定する。すなわち、情報処理装置は、単語の出現頻度でエントロピー符号化を行い、符号化された圧縮符号を葉の圧縮符号に設定する。
【００２６】
情報処理装置は、生成されたケヤキ木を用いて、圧縮ファイルの圧縮符号データの内部コード化を行う。例えば、情報処理装置は、圧縮符号データから順次圧縮符号を読み出す。情報処理装置は、読み出した圧縮符号のビット列と、葉に割り当てられた圧縮符号のビット列とを比較し、読み出した圧縮符号のビット列にヒットする枝に接続される葉を特定する。情報処理装置は、特定した葉の単語へのポインタが指す内容に対応する内部コードを取得する。すなわち、情報処理装置は、読み出した圧縮符号を内部コードに変換する。
【００２７】
情報処理装置は、１行毎に、変換された内部コードを用いて、構文解析およびインタープリタの実行を行う。１行には、「改行」から次の「改行」までの間の複数の圧縮符号に対応する内部コードが含まれる。これにより、インタープリタ形式のソースプログラムが圧縮状態で保持される場合に、情報処理装置は、圧縮状態を伸長しなくても、圧縮状態から直接内部コードに変換するので、インタープリタの実行速度を向上させることができる。すなわち、情報処理装置は、インタープリタの実行指示から実行終了までの実行速度を向上させることができる。
【００２８】
なお、情報処理装置は、１行毎に、複数の圧縮符号に対応する葉の属性を用いて構文解析を行い、複数の圧縮符号に対応するそれぞれの内部コードを用いてインタープリタの実行を行っても良い。これにより、情報処理装置は、葉の属性を用いて構文解析を行うので、さらに、インタープリタの実行速度を向上させることができる。
【００２９】
［情報処理装置の機能構成］
図８は、実施例に係る情報処理装置の機能構成を示すブロック図である。図８に示すように、この情報処理装置１００は、圧縮部２００と、実行部３００とを有する。
【００３０】
圧縮部２００は、図３に示した圧縮処理を実行する処理部である。実行部３００は、図７に示した内部コード変換処理を含むインタープリタを実行する処理部である。記憶部４００は、内部コード対応表４１０を記憶する。内部コード対応表４１０は、図５に示したデータ構造と同様であるので、その説明を省略する。
【００３１】
［圧縮部の機能構成］
図９は、実施例に係る圧縮部の機能構成を示すブロック図である。図９に示すように、圧縮部２００は、ファイルリード部２１０、字句解析部２２０、出現頻度集計部２３０、ケヤキ木生成部２４０、圧縮符号化部２５０およびファイルライト部２６０を有する。
【００３２】
ファイルリード部２１０は、ファイル内のインタープリタ形式のソースプログラムを読み出す。ファイルリード部２１０は、読み出したソースプログラムを字句解析部２２０および圧縮符号化部２５０に出力する。
【００３３】
字句解析部２２０は、ソースプログラムに対して、字句解析を行う。例えば、字句解析部２２０は、ソースプログラムを単語毎に分割する。字句解析部２２０は、分割した単語を属性に分類する。字句解析部２２０は、属性毎の分類を出現頻度集計部２３０およびケヤキ木生成部２４０に出力する。
【００３４】
出現頻度集計部２３０は、属性毎の分類に応じて、分類に属する単語の文字列や記号の出現頻度を集計する。出現頻度集計部２３０は、属性毎の分類に応じて、集計された出現頻度のより高い単語に対して、より短い圧縮符号を割り当てる。すなわち、出現頻度集計部２３０は、単語の出現頻度でエントロピー符号化を行う。
【００３５】
ケヤキ木生成部２４０は、属性に応じたケヤキ木を生成する。例えば、ケヤキ木生成部２４０は、字句解析部２２０によって分類された属性毎の単語を、ケヤキ木を構成する葉に割り当てる。ケヤキ木生成部２４０は、単語の属性を、単語の葉に対応する属性の領域に設定する。ケヤキ木生成部２４０は、単語の文字列を示すポインタを、単語の葉に対応する単語へのポインタに設定する。すなわち、ケヤキ木生成部２４０は、単語へのポインタに、内部コード対応表４１０に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。ケヤキ木生成部２４０は、出現頻度集計部２３０によって割り当てた圧縮符号を、単語の葉に対応する圧縮符号に設定し、圧縮符号の符号長を、単語の葉に対応する圧縮符号長に設定する。ケヤキ木生成部２４０は、生成されたケヤキ木を圧縮符号化部２５０に出力する。
【００３６】
圧縮符号化部２５０は、生成されたケヤキ木を用いて、ソースプログラムの圧縮符号化を行う。圧縮符号化部２５０は、ソースプログラムの圧縮符号データをファイルライト部２６０に出力する。
【００３７】
ファイルライト部２６０は、ソースプログラムの圧縮符号データを圧縮ファイルに書き込む。ファイルライト部２６０は、字句解析部２２０によって属性毎に分類された単語の文字列および単語の属性を、出現頻度集計部２３０によって集計された出現頻度とともに、圧縮ファイルのヘッダ部に書き込む。
【００３８】
［実行部の機能構成］
図１０は、実施例に係る実行部の機能構成を示すブロック図である。図１０に示すように、実行部３００は、ファイルリード部３１０、ケヤキ木生成部３２０、内部コード変換部３３０、構文解析部３４０およびインタープリタ実行部３５０を有する。
【００３９】
ファイルリード部３１０は、圧縮ファイルの実行指示を受け付けると、実行指示を受け付けた圧縮ファイルを読み出す。ファイルリード部３１０は、読み出した圧縮ファイルをケヤキ木生成部３２０および内部コード変換部３３０に出力する。
【００４０】
ケヤキ木生成部３２０は、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成する。ヘッダ部に記憶された情報には、単語毎の文字列、属性および出現頻度が含まれる。例えば、ケヤキ木生成部３２０は、単語の文字列を、ケヤキ木を構成する葉に割り当てる。ケヤキ木生成部３２０は、葉の属性の領域に、単語の属性を「１」（ＯＮ）に設定する。ケヤキ木生成部３２０は、葉の単語へのポインタに、内部コード対応表４１０に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。ケヤキ木生成部３２０は、葉の圧縮符号に、単語の出現頻度を基に割り当てられる圧縮符号を設定し、葉の圧縮符号長に圧縮符号の符号長を設定する。すなわち、ケヤキ木生成部３２０は、単語の出現頻度でエントロピー符号化を行い、符号化された圧縮符号を葉の圧縮符号に設定する。ケヤキ木生成部３２０は、生成されたケヤキ木を内部コード変換部３３０に出力する。
【００４１】
内部コード変換部３３０は、生成されたケヤキ木を用いて、圧縮ファイルの圧縮符号データの内部コード化を行う。例えば、内部コード変換部３３０は、圧縮符号データから順次圧縮符号を読み出す。内部コード変換部３３０は、読み出した圧縮符号のビット列と、ケヤキ木の葉に割り当てられた圧縮符号のビット列とを比較し、読み出した圧縮符号のビット列にヒットする枝に接続される葉を特定する。内部コード変換部３３０は、特定した葉の単語へのポインタが示す、内部コード対応表４１０の内容に対応する内部コードを取得する。すなわち、内部コード変換部３３０は、読み出した圧縮符号を内部コードに変換する。内部コード変換部３３０は、変換された内部コードを構文解析部３４０に出力する。
【００４２】
構文解析部３４０は、１行毎に、変換された内部コードを用いて、構文解析を行う。例えば、構文解析部３４０は、「改行」の内部コードから次の「改行」の内部コードまでの間の複数の内部コードを用いて、構文解析を行う。構文解析部３４０は、１行分の複数の内部コードをインタープリタ実行部３５０に出力する。なお、構文解析部３４０は、「改行」から次の「改行」までの間の複数の圧縮符号に対応する葉の属性を用いて構文解析を行っても良い。
【００４３】
インタープリタ実行部３５０は、１行分の複数の内部コードを用いて、インタープリタを実行する。なお、インタープリタ実行部３５０は、１行分の複数の圧縮符号に対応する葉の属性を用いて構文解析を行う場合には、１行分の複数の圧縮符号に対応するそれぞれの内部コードを用いて、インタープリタを実行すれば良い。
【００４４】
［圧縮処理のフローチャート］
図１１は、実施例に係る圧縮処理のフローチャートの一例を示す図である。
【００４５】
まず、情報処理装置１００は、ソースプログラムを受け付けたか否かを判定する（ステップＳ１１）。情報処理装置１００は、ソースプログラムを受け付けていないと判定した場合には（ステップＳ１１；Ｎｏ）、ソースプログラムを受け付けるまで、判定処理を繰り返す。
【００４６】
一方、情報処理装置１００は、ソースプログラムを受け付けたと判定した場合には（ステップＳ１１；Ｙｅｓ）、受け付けたソースプログラムに対して、字句解析を行う（ステップＳ１２）。
【００４７】
そして、情報処理装置１００は、字句解析されたそれぞれの字句（単語）を属性毎に分類する（ステップＳ１３）。情報処理装置１００は、属性毎の分類に応じて、分類に属する単語の出現頻度を集計する（ステップＳ１４）。情報処理装置１００は、それぞれの単語を、出現頻度に応じて圧縮符号に割り当てる（ステップＳ１５）。すなわち、情報処理装置１００は、属性毎の分類に応じて、集計された出現頻度のより高い単語に対して、より短い圧縮符号を割り当てる。
【００４８】
そして、情報処理装置１００は、字句解析されたそれぞれの単語をケヤキ木の葉に割り当て、割り当てたケヤキ木の葉に、圧縮符号、属性、内部コードへのポインタを設定する（ステップＳ１６）。例えば、情報処理装置１００は、それぞれの単語毎に、単語の葉に対応する属性の領域に、単語の属性を設定する。情報処理装置１００は、単語の葉に対応する単語へのポインタに、単語の文字列を示すポインタを設定する。すなわち、情報処理装置１００は、単語へのポインタに、内部コード対応表４１０に記憶された、単語の文字列と一致する内容の領域へのポインタを設定する。情報処理装置１００は、単語の葉に対応する圧縮符号に、出現頻度に応じて割り当てられた圧縮符号を設定し、単語の葉に対応する圧縮符号長に、圧縮符号の符号長を設定する。
【００４９】
そして、情報処理装置１００は、ケヤキ木を参照して、受け付けたソースプログラムを圧縮符号化する（ステップＳ１７）。
【００５０】
そして、情報処理装置１００は、ソースプログラムの圧縮符号データを圧縮ファイルに書き込む（ステップＳ１８）。加えて、情報処理装置１００は、字句解析されたそれぞれの単語の文字列および属性を、出現頻度とともに、圧縮ファイルのヘッダ部に書き込む。
【００５１】
［実行処理のフローチャート］
図１２は、実施例に係る圧縮処理のフローチャートの一例を示す図である。
【００５２】
図１２に示すように、情報処理装置１００は、圧縮ファイルを受け付けたか否かを判定する（ステップＳ２１）。情報処理装置１００は、圧縮ファイルを受け付けていないと判定した場合には（ステップＳ２１；Ｎｏ）、圧縮ファイルを受け付けるまで、判定処理を繰り返す。
【００５３】
一方、情報処理装置１００は、圧縮ファイルを受け付けたと判定した場合には（ステップＳ２１；Ｙｅｓ）、ケヤキ木を生成する（ステップＳ２２）。例えば、情報処理装置１００は、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成する。
【００５４】
そして、情報処理装置１００は、圧縮ファイルの圧縮符号データから圧縮符号を読み出す（ステップＳ２３）。情報処理装置１００は、生成したケヤキ木を参照し、読み出した圧縮符号にヒットする葉を特定する（ステップＳ２４）。
【００５５】
そして、情報処理装置１００は、内部コード対応表４１０を参照し、特定した葉の圧縮符号を葉に紐づく内部コードに変換する（ステップＳ２５）。例えば、情報処理装置１００は、特定した葉の単語へのポインタが示す、内部コード対応表４１０の内容に対応する内部コードを取得する。
【００５６】
そして、情報処理装置１００は、１行毎に、変換された内部コードをもとに構文解析し、インタープリタを実行する（ステップＳ２６）。例えば、情報処理装置１００は、「改行」の内部コードから次の「改行」の内部コードまでの間の複数の内部コードを用いて、構文解析を行う。情報処理装置１００は、かかる複数の内部コードを用いて、インタープリタを実行する。なお、情報処理装置１００は、１行毎に、圧縮符号に対応する葉の属性をもとに構文解析を行っても良い。
【００５７】
そして、情報処理装置１００は、圧縮ファイルの圧縮符号データの終端か否かを判定する（ステップＳ２７）。情報処理装置１００は、圧縮ファイルの圧縮符号データの終端でないと判定した場合には（ステップＳ２７；Ｎｏ）、次の圧縮符号を読み出すべく、ステップＳ２３に移行する。
【００５８】
一方、情報処理装置１００は、圧縮ファイルの圧縮符号データの終端であると判定した場合には（ステップＳ２７；Ｙｅｓ）、実行処理を終了する。
【００５９】
［実施例の効果］
上記実施例によれば、情報処理装置１００は、インタープリタ形式のソースコードに対して、字句解析を行う。情報処理装置１００は、字句解析が行われたソースコードを、内部コードと圧縮符号とを関連付ける圧縮辞書を用いて圧縮する。情報処理装置１００は、圧縮されたソースコードに対するインタープリタの実行指示を受けた場合に、前記圧縮されたソースコードを前記圧縮辞書に基づいて内部コードに変換する。そして、情報処理装置１００は、変換された内部コードに基づいて、順次処理を実行する。かかる構成によれば、情報処理装置１００は、圧縮されたソースコードを伸長しなくても、内部コードと圧縮符号とを関連付ける圧縮辞書を用いることで圧縮状態からインタープリタの内部コードに変換できる。この結果、情報処理装置１００は、圧縮されたソースコードのインタープリタの実行速度を向上させることができる。
【００６０】
また、上記実施例によれば、情報処理装置１００は、字句解析が行われた単語毎に、各単語に対応する圧縮符号、属性および内部コードへのポインタを葉に含むツリー構造を生成する。情報処理装置１００は、生成されたツリー構造に登録されている単語に対応する属性をもとに、構文解析を実行し、当該単語に対応する内部コードをもとに、インタープリタ処理を実行する。かかる構成によれば、情報処理装置１００は、圧縮符号とその属性をすばやく判定できるので、構文解析の高速化を実現できる。
【００６１】
また、上記実施例によれば、情報処理装置１００は、ソースコードに対して字句解析が行われた単語毎に、属性およびソースコードにおける出現頻度を対応付けて、圧縮ファイルのヘッダ部に格納する。かかる構成によれば、情報処理装置１００は、圧縮ファイルのヘッダ部に格納された情報を用いて、インタープリタの実行前にケヤキ木を生成することができる。この結果、情報処理装置１００は、ケヤキ木を用いることで、圧縮されたソースコードのインタープリタの実行速度を向上させることができる。
【００６２】
［実施例に関連する他の態様］
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【００６３】
また、実施例に係る情報処理装置１００は、圧縮辞書に対応するツリー構造としてケヤキ木を生成すると説明した。しかしながら、情報処理装置１００は、これに限定されず、圧縮辞書に対応するツリー構造としてハフマン木を生成するものとしても良い。すなわち、情報処理装置１００は、属性毎の単語を、それぞれ圧縮辞書に対応するハフマン木を構成する葉に割り当て、それぞれの葉に、対応する単語の圧縮符号、属性および単語へのポインタを設定すれば良い。そして、情報処理装置１００は、生成されたハフマン木を用いて、圧縮状態のソースコードの内部コード化を行ない、内部コードを用いて、構文解析およびインタープリタの実行を行えば良い。
【００６４】
また、実施例に係る情報処理装置１００は、ソースプログラムを圧縮する際に、ソースプログラムの圧縮符号データを圧縮ファイルに書き込み、加えて、単語毎に単語の文字列および属性を、出現頻度とともに、圧縮ファイルのヘッダ部に書き込む。そして、情報処理装置１００は、圧縮されたソースプログラムを実行する際に、圧縮ファイルのヘッダ部に記憶された情報を用いて、ケヤキ木を生成し、生成されたケヤキ木を用いて、圧縮ファイルの圧縮符号データの内部コード化を行う。しかしながら、情報処理装置１００は、これに限定されず、ソースプログラムを圧縮する際に、ソースプログラムの圧縮符号データを圧縮ファイルに書き込み、加えて、ケヤキ木および内部コード対応表４１０を圧縮ファイルのトレーラ部に書き込むようにしても良い。これにより、情報処理装置１００は、圧縮されたソースプログラムを実行する際に、ケヤキ木を生成する必要がなく、ケヤキ木を読み出すだけでその後の圧縮符号データの内部コード化を行うことができ、さらに、インタープリタの実行速度を向上させることができる。
【００６５】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６６】
［情報処理装置のハードウェア構成］
図１３は、実施例の情報処理装置のハードウェア構成を示す図である。図１３の例が示すように、コンピュータ５００は、各種演算処理を実行するＣＰＵ５０１と、ユーザからのデータ入力を受け付ける入力装置５０２と、モニタ５０３とを有する。また、コンピュータ５００は、記憶媒体からプログラム等を読み取る媒体読取装置５０４と、他の装置と接続するためのインターフェース装置５０５と、他の装置と無線により接続するための無線通信装置５０６とを有する。また、コンピュータ５００は、各種情報を一時記憶するＲＡＭ５０７と、ハードディスク装置５０８とを有する。また、各装置５０１〜５０８は、バス５０９に接続される。
【００６７】
ハードディスク装置５０８には、例えば図９に示した字句解析部２２０、出現頻度集計部２３０、ケヤキ木生成部２４０および圧縮符号化部２５０の各処理部と同様の機能を有する圧縮処理プログラムが記憶される。また、ハードディスク装置５０８には、例えば図１０に示したケヤキ木生成部３２０、内部コード変換部３３０、構文解析部３４０およびインタープリタ実行部３５０の各処理部と同様の機能を有する実行処理プログラムが記憶される。また、ハードディスク装置５０８には、圧縮処理プログラムおよび実行処理プログラムを含む情報処理プログラムを実現するための各種データが記憶される。
【００６８】
ＣＰＵ５０１は、ハードディスク装置５０８に記憶された各プログラムを読み出して、ＲＡＭ５０７に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ５００を、例えば図９に示した字句解析部２２０、出現頻度集計部２３０、ケヤキ木生成部２４０および圧縮符号化部２５０として機能させることができる。これらのプログラムは、コンピュータ５００を、例えば図１０に示したケヤキ木生成部３２０、内部コード変換部３３０、構文解析部３４０およびインタープリタ実行部３５０として機能させることができる。
【００６９】
なお、上記の情報処理プログラムは、必ずしもハードディスク装置５０８に記憶されている必要はない。例えば、コンピュータ５００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ５００が読み出して実行するようにしてもよい。コンピュータ５００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ５００がこれらからプログラムを読み出して実行するようにしてもよい。
【００７０】
図１４は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ５００において、図１４に示すハードウェア群２６（５０１〜５０９）の制御を行なうＯＳ（オペレーティング・システム）２７が動作する。ＯＳ２７に従った手順でＣＰＵ５０１が動作して、ハードウェア群２６の制御・管理が行なわれることにより、アプリケーションプログラム２９やミドルウェア２８に従った処理がハードウェア群２６で実行される。さらに、コンピュータ５００において、ミドルウェア２８またはアプリケーションプログラム２９が、ＲＡＭ４０７に読み出されてＣＰＵ５０１により実行される。
【００７１】
ＣＰＵ５０１により符号化する単語を受け付けた場合、ミドルウェア２８またはアプリケーションプログラム２９の少なくとも一部に基づく処理を行なうことで、（それらの処理をＯＳ２７に基づいてハードウェア群２６を制御して）圧縮部２００および実行部３００の情報処理機能が実現される。情報処理機能は、それぞれアプリケーションプログラム２９自体に含まれてもよいし、アプリケーションプログラム２９に従って呼び出されることで実行されるミドルウェア２８の一部であってもよい。
【符号の説明】
【００７２】
１００  情報処理装置
２００  圧縮部
２１０  ファイルリード部
２２０  字句解析部
２３０  出現頻度集計部
２４０  ケヤキ木生成部
２５０  圧縮符号化部
２６０  ファイルライト部
３００  実行部
３１０  ファイルリード部
３２０  ケヤキ木生成部
３３０  内部コード変換部
３４０  構文解析部
３５０  インタープリタ実行部
４００  記憶部
４１０  内部コード対応表
【図１】
2016199255.tif 000003
【図２】
2016199255.tif 000004
【図３】
2016199255.tif 000005
【図４】
2016199255.tif 000006
【図５】
2016199255.tif 000007
【図６】
2016199255.tif 000008
【図７】
2016199255.tif 000009
【図８】
2016199255.tif 000010
【図９】
2016199255.tif 000011
【図１０】
2016199255.tif 000012
【図１１】
2016199255.tif 000013
【図１２】
2016199255.tif 000014
【図１３】
2016199255.tif 000015
【図１４】
2016199255.tif 000016
【国際調査報告】
2016199255.tif 000017
2016199255.tif 000018