JPH0877197A - 文字列検索方法 - Google Patents
文字列検索方法Info
- Publication number
- JPH0877197A JPH0877197A JP6215504A JP21550494A JPH0877197A JP H0877197 A JPH0877197 A JP H0877197A JP 6215504 A JP6215504 A JP 6215504A JP 21550494 A JP21550494 A JP 21550494A JP H0877197 A JPH0877197 A JP H0877197A
- Authority
- JP
- Japan
- Prior art keywords
- character
- character string
- address
- search
- information
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】
【目的】 検索対象文字列の並びから文字列が存在する
か否かを検索する場合に、検索対象の数にかかわらず
に、高速に検索可能な文字列検索方法を提供することを
目的とする。 【構成】 文字列の各文字の文字コードをそのままアド
レスとした文字変換アドレス20を生成する。生成した
文字変換アドレス20の基となる文字列が存在すること
を、文字列情報として、文字変換アドレス20に基づい
て、検索テーブル10に格納する。そして、ある文字列
が存在するか否かを検索する場合に、検索すべき文字列
の各文字の文字コードをそのままアドレスとした文字変
換アドレス20を生成し、この文字変換アドレス20に
基づくアドレスが割り当てられた検索テーブル10から
文字列情報を読み出す。
か否かを検索する場合に、検索対象の数にかかわらず
に、高速に検索可能な文字列検索方法を提供することを
目的とする。 【構成】 文字列の各文字の文字コードをそのままアド
レスとした文字変換アドレス20を生成する。生成した
文字変換アドレス20の基となる文字列が存在すること
を、文字列情報として、文字変換アドレス20に基づい
て、検索テーブル10に格納する。そして、ある文字列
が存在するか否かを検索する場合に、検索すべき文字列
の各文字の文字コードをそのままアドレスとした文字変
換アドレス20を生成し、この文字変換アドレス20に
基づくアドレスが割り当てられた検索テーブル10から
文字列情報を読み出す。
Description
【0001】
【産業上の利用分野】本発明は、文字列検索方法に関
し、更に詳細には、例えばコンパイラやデータベース等
において、検索対象文字列の並びから所定の文字列が存
在するか否かを高速に検索したり、文字列の検索時に、
その文字列に付随する情報を高速に読み出したりするの
に使用される文字列検索方法に関する。なお、本発明の
文字列検索方法は、コンピュータ装置を利用して、プロ
グラム制御により実行される。
し、更に詳細には、例えばコンパイラやデータベース等
において、検索対象文字列の並びから所定の文字列が存
在するか否かを高速に検索したり、文字列の検索時に、
その文字列に付随する情報を高速に読み出したりするの
に使用される文字列検索方法に関する。なお、本発明の
文字列検索方法は、コンピュータ装置を利用して、プロ
グラム制御により実行される。
【0002】
【従来の技術】文字列を検索する手法には、順次検索法
や2分検索法など様々な手法があり、そのほとんどが、
検索したい文字列を有する文字列群から、何らかの方法
で比較しながら捜し出す方法を採用している。
や2分検索法など様々な手法があり、そのほとんどが、
検索したい文字列を有する文字列群から、何らかの方法
で比較しながら捜し出す方法を採用している。
【0003】
【発明が解決しようとする課題】しかしながら、前述し
た従来の文字列検索手法では、検索対象文字列の並びか
ら任意の文字列を検索する場合に、検索対象数が増加す
ると、文字列の比較時間が長くなるため、検索スピード
が低下するという問題が生じている。
た従来の文字列検索手法では、検索対象文字列の並びか
ら任意の文字列を検索する場合に、検索対象数が増加す
ると、文字列の比較時間が長くなるため、検索スピード
が低下するという問題が生じている。
【0004】一方、文字列検索時にその文字列に関する
情報を読み出す場合に、比較のための文字列記憶位置と
情報を格納する位置が分かれている(ある文字列に対応
する情報の格納位置が複数に分かれている)ため、情報
の読み出しスピードが低下するという問題も生じてい
る。
情報を読み出す場合に、比較のための文字列記憶位置と
情報を格納する位置が分かれている(ある文字列に対応
する情報の格納位置が複数に分かれている)ため、情報
の読み出しスピードが低下するという問題も生じてい
る。
【0005】本発明は、前述した事情に鑑みてなされた
もので、検索対象文字列の並びから文字列が存在するか
否かを検索する場合に、検索対象の数にかかわらずに、
高速に検索可能な文字列検索方法を提供することを第1
の課題とする。
もので、検索対象文字列の並びから文字列が存在するか
否かを検索する場合に、検索対象の数にかかわらずに、
高速に検索可能な文字列検索方法を提供することを第1
の課題とする。
【0006】また、本発明は、文字列検索時に、その文
字列に付随する情報を読み出す場合に、検索対象の数に
かかわらず、高速に読み出し可能な文字列検索方法を提
供することを第2の課題とする。
字列に付随する情報を読み出す場合に、検索対象の数に
かかわらず、高速に読み出し可能な文字列検索方法を提
供することを第2の課題とする。
【0007】
<本発明の第1の文字列検索方法>本発明の第1の文字
列検索方法は、前述した第1の課題を解決するため、所
定文字数以内で構成された文字列に関する文字列情報を
格納する検索テーブルを利用する文字列検索方法におい
て、前記文字列の各文字の文字コードをそのままアドレ
スとした文字変換アドレスを生成し、生成した文字変換
アドレスの基となる文字列が存在することを、文字列情
報として、文字変換アドレスに基づいて、前記検索テー
ブルに格納し、ある文字列が存在するか否かを検索する
場合に、検索すべき文字列の各文字の文字コードをその
ままアドレスとした文字変換アドレスを生成し、この文
字変換アドレスに基づくアドレスが割り当てられた前記
検索テーブルから文字列情報を読み出すことを特徴とす
る(請求項1に対応)。
列検索方法は、前述した第1の課題を解決するため、所
定文字数以内で構成された文字列に関する文字列情報を
格納する検索テーブルを利用する文字列検索方法におい
て、前記文字列の各文字の文字コードをそのままアドレ
スとした文字変換アドレスを生成し、生成した文字変換
アドレスの基となる文字列が存在することを、文字列情
報として、文字変換アドレスに基づいて、前記検索テー
ブルに格納し、ある文字列が存在するか否かを検索する
場合に、検索すべき文字列の各文字の文字コードをその
ままアドレスとした文字変換アドレスを生成し、この文
字変換アドレスに基づくアドレスが割り当てられた前記
検索テーブルから文字列情報を読み出すことを特徴とす
る(請求項1に対応)。
【0008】<本発明の第2の文字列検索方法>次に、
本発明の第2の文字列検索方法は、前述した第2の課題
を解決するため、所定文字数以内で構成された文字列に
関する文字列情報を格納する検索テーブルを利用する文
字列検索方法において、前記文字列の各文字の文字コー
ドをそのままアドレスとした文字変換アドレスを生成
し、生成した文字変換アドレスの基となる文字列に付随
すべき情報を文字列情報として、文字変換アドレスに基
づいて、前記検索テーブルに格納し、ある文字列に付随
する情報を検索する場合に、検索すべき文字列の各文字
の文字コードをそのままアドレスとした文字変換アドレ
スを生成し、この文字変換アドレスに基づくアドレスが
割り当てられた前記検索テーブルから文字列情報を読み
出すことを特徴とする(請求項2に対応)。
本発明の第2の文字列検索方法は、前述した第2の課題
を解決するため、所定文字数以内で構成された文字列に
関する文字列情報を格納する検索テーブルを利用する文
字列検索方法において、前記文字列の各文字の文字コー
ドをそのままアドレスとした文字変換アドレスを生成
し、生成した文字変換アドレスの基となる文字列に付随
すべき情報を文字列情報として、文字変換アドレスに基
づいて、前記検索テーブルに格納し、ある文字列に付随
する情報を検索する場合に、検索すべき文字列の各文字
の文字コードをそのままアドレスとした文字変換アドレ
スを生成し、この文字変換アドレスに基づくアドレスが
割り当てられた前記検索テーブルから文字列情報を読み
出すことを特徴とする(請求項2に対応)。
【0009】<本発明の文字列検索方法の実施態様> (文字列から文字変換アドレスを生成する方法)文字列
から文字変換アドレスを生成する方法を、図1及び図2
を参照して説明する。図1及び図2は、それぞれ本発明
の第1及び第2の文字列検索方法の原理図である。
から文字変換アドレスを生成する方法を、図1及び図2
を参照して説明する。図1及び図2は、それぞれ本発明
の第1及び第2の文字列検索方法の原理図である。
【0010】まず、例えば“abc”という文字列を1
6進数で表した場合の内部コードは“0x61626
3”(“a”が“61”に、“b”が“62”に、
“c”が“63”にそれぞれ対応する)となる。この
“0x616263”が、“abc”という文字列から
生成される文字変換アドレスとなる。
6進数で表した場合の内部コードは“0x61626
3”(“a”が“61”に、“b”が“62”に、
“c”が“63”にそれぞれ対応する)となる。この
“0x616263”が、“abc”という文字列から
生成される文字変換アドレスとなる。
【0011】同様に、“s”、“D5PQ”という文字
列から生成される文字変換アドレスは、それぞれ“0x
73”(=0x00000073)”、“0x4435
5051”となる。
列から生成される文字変換アドレスは、それぞれ“0x
73”(=0x00000073)”、“0x4435
5051”となる。
【0012】なお、文字に対応する内部コードは、各文
字に一意に対応するものならばどんなものでも良く、例
えばISO646、JISX0201、JISX020
8等の規定を利用することができる。本発明の説明で
は、JISX0201に基づく内部コードを使用する。
字に一意に対応するものならばどんなものでも良く、例
えばISO646、JISX0201、JISX020
8等の規定を利用することができる。本発明の説明で
は、JISX0201に基づく内部コードを使用する。
【0013】(検索テーブル)本発明の文字列検索方法
及び文字列検索時の付随情報読出方法における検索テー
ブルとしては、例えばROM(Read Only Memory;読み
出し専用記憶装置)、半導体記憶装置、磁気ディスク記
憶装置、フレキシィブル装置、磁気テープ装置、CD−
ROM(Compact Disc ROM;光学的記憶装置)、M/O
(Magnet Optical;光磁気ディスク装置)などがあげら
れる。
及び文字列検索時の付随情報読出方法における検索テー
ブルとしては、例えばROM(Read Only Memory;読み
出し専用記憶装置)、半導体記憶装置、磁気ディスク記
憶装置、フレキシィブル装置、磁気テープ装置、CD−
ROM(Compact Disc ROM;光学的記憶装置)、M/O
(Magnet Optical;光磁気ディスク装置)などがあげら
れる。
【0014】この検索テーブルに個々の文字列が存在し
ないことを示す識別情報を格納するには、例えば、記憶
内容を全て特殊コード(“00”、“FF”等)で埋め
る方法がある。
ないことを示す識別情報を格納するには、例えば、記憶
内容を全て特殊コード(“00”、“FF”等)で埋め
る方法がある。
【0015】次に、1個の文字列を記憶する際に割り当
てる記憶単位をkバイトとした場合に、記憶できる情報
量mは、式(1)のようになる。 m = 28k = 256k 〔個〕 (1) また、検索文字列の最大バイト数をnバイトとした場合
に、検索テーブルの大きさは、式(2)のようになる。 mn 〔バイト〕 (2) 例えば、記憶単位kを1バイトとすると、1個の文字列
に対して記憶できる情報量mは256個となり、検索テ
ーブルの大きさは、式(3)のようになる。 256n = 0xFFn 〔バイト〕 (3) そして、検索テーブルの先頭アドレスを基底アドレス
(base)とした場合に、この基底アドレスから、式
(4)でポイント位置を算出する。 ポイント位置 = 基底アドレス+文字列変換アドレス×記憶単位k ・・・(4)
てる記憶単位をkバイトとした場合に、記憶できる情報
量mは、式(1)のようになる。 m = 28k = 256k 〔個〕 (1) また、検索文字列の最大バイト数をnバイトとした場合
に、検索テーブルの大きさは、式(2)のようになる。 mn 〔バイト〕 (2) 例えば、記憶単位kを1バイトとすると、1個の文字列
に対して記憶できる情報量mは256個となり、検索テ
ーブルの大きさは、式(3)のようになる。 256n = 0xFFn 〔バイト〕 (3) そして、検索テーブルの先頭アドレスを基底アドレス
(base)とした場合に、この基底アドレスから、式
(4)でポイント位置を算出する。 ポイント位置 = 基底アドレス+文字列変換アドレス×記憶単位k ・・・(4)
【0016】
【作用】本発明の第1の文字列検索方法によれば、ま
ず、検索テーブルに、対象となる全ての文字列が存在し
ないことを示す文字列情報が格納される。そして、存在
する文字列に対して、文字変換アドレスが生成され、こ
の文字変換アドレスに基づいて、文字列が存在すること
を示す文字列情報が格納される。
ず、検索テーブルに、対象となる全ての文字列が存在し
ないことを示す文字列情報が格納される。そして、存在
する文字列に対して、文字変換アドレスが生成され、こ
の文字変換アドレスに基づいて、文字列が存在すること
を示す文字列情報が格納される。
【0017】ここで、ある文字列が存在するか否かを検
索する場合に、検索すべき文字列の各文字の文字コード
をそのままアドレスとした文字変換アドレスが生成され
る。そして、この文字変換アドレスに基づくアドレスが
割り当てられた前記検索テーブルから文字列情報が読み
出されることで、文字列が存在するか否かが検索され
る。
索する場合に、検索すべき文字列の各文字の文字コード
をそのままアドレスとした文字変換アドレスが生成され
る。そして、この文字変換アドレスに基づくアドレスが
割り当てられた前記検索テーブルから文字列情報が読み
出されることで、文字列が存在するか否かが検索され
る。
【0018】次に、本発明の第2の文字列検索によれ
ば、まず、検索テーブルに、対象となる全ての文字列に
対して、付随する情報が存在しないことを示す文字列情
報が格納される。そして、付随する情報が存在する文字
列に対して、文字変換アドレスが生成され、この文字変
換アドレスに基づいて、文字列に付随する文字列情報が
格納される。
ば、まず、検索テーブルに、対象となる全ての文字列に
対して、付随する情報が存在しないことを示す文字列情
報が格納される。そして、付随する情報が存在する文字
列に対して、文字変換アドレスが生成され、この文字変
換アドレスに基づいて、文字列に付随する文字列情報が
格納される。
【0019】ここで、ある文字列に付随する情報を検索
する場合に、検索すべき文字列の各文字の文字コードを
そのままアドレスとした文字変換アドレスが生成され
る。そして、この文字変換アドレスに基づくアドレスが
割り当てられた前記検索テーブルから文字列情報が読み
出されることで、文字列に付随する情報が検索される。
する場合に、検索すべき文字列の各文字の文字コードを
そのままアドレスとした文字変換アドレスが生成され
る。そして、この文字変換アドレスに基づくアドレスが
割り当てられた前記検索テーブルから文字列情報が読み
出されることで、文字列に付随する情報が検索される。
【0020】
【実施例】以下、本発明の2つの実施例を図面を参照し
て説明する。 <第1実施例>第1実施例は、アセンブラプログラム中
に、ラベル名が2重定義されているか否かを検査する例
である。
て説明する。 <第1実施例>第1実施例は、アセンブラプログラム中
に、ラベル名が2重定義されているか否かを検査する例
である。
【0021】通常、アセンブラプログラムがアセンブラ
ソースをアセンブルする時、ラベル名が2重定義されて
いた場合は、2重定義のエラーメッセージを出力する。
従って、アセンブル途中にラベル名が出現した場合は、
以前にそのラベル名が定義されたか否かをチェックする
処理が必要となる。
ソースをアセンブルする時、ラベル名が2重定義されて
いた場合は、2重定義のエラーメッセージを出力する。
従って、アセンブル途中にラベル名が出現した場合は、
以前にそのラベル名が定義されたか否かをチェックする
処理が必要となる。
【0022】最初に、具体的なアセンブラソース例を説
明する。図3は、インテル社の8086系のアセンブラ
ソースであり、各行の左端に記述された“ST”、“L
P1”、“ENT1”等はラベルと呼ばれ、各行のアド
レスを名称で指定するものである。各行のアドレスは、
異なるものであるから、ラベルも一意に付されているこ
とが必要となるのである。なお、ラベルは、行毎に付け
る必要はなく、必要な行のみ付けるようにすればよい。
そして、行の中央に記述された、“PUSHAX”、
“PUSH CX”、“MOV AX,0000H”等
はCPU(中央演算処理装置)の動作を記述したニーモ
ニック(記号表現)である。
明する。図3は、インテル社の8086系のアセンブラ
ソースであり、各行の左端に記述された“ST”、“L
P1”、“ENT1”等はラベルと呼ばれ、各行のアド
レスを名称で指定するものである。各行のアドレスは、
異なるものであるから、ラベルも一意に付されているこ
とが必要となるのである。なお、ラベルは、行毎に付け
る必要はなく、必要な行のみ付けるようにすればよい。
そして、行の中央に記述された、“PUSHAX”、
“PUSH CX”、“MOV AX,0000H”等
はCPU(中央演算処理装置)の動作を記述したニーモ
ニック(記号表現)である。
【0023】図3から明らかなように、“LP1”とい
うラベルは、4行目と9行目に2重定義されており、
“ENT1”というラベルは、5行目と13行目に2重
定義されているので、前述した理由によりエラーとな
る。この2重定義されたラベルを検索する方法は、以下
のように行われる。
うラベルは、4行目と9行目に2重定義されており、
“ENT1”というラベルは、5行目と13行目に2重
定義されているので、前述した理由によりエラーとな
る。この2重定義されたラベルを検索する方法は、以下
のように行われる。
【0024】〔第1実施例の処理内容〕最初に、図3の
アセンブラソースコード中に表れた全てのラベル(“S
T”、“LP1”、“MOV”、“ENT1”、“EN
T2”、“ENT3”、“ENT4”)から、それぞれ
の文字変換アドレスが求められる。具体的には、図4に
示すように、“ST”から“0x5354”が、“LP
1”から“0x4C5031”が、“MOV”から“0
x4D4F56”が、“ENT1”から“0x454E
5431”が、“ENT2”から“0x454E543
2”が、“ENT3”から“0x454E5433”
が、“ENT4”から“0x454E5434”がそれ
ぞれ求められる。
アセンブラソースコード中に表れた全てのラベル(“S
T”、“LP1”、“MOV”、“ENT1”、“EN
T2”、“ENT3”、“ENT4”)から、それぞれ
の文字変換アドレスが求められる。具体的には、図4に
示すように、“ST”から“0x5354”が、“LP
1”から“0x4C5031”が、“MOV”から“0
x4D4F56”が、“ENT1”から“0x454E
5431”が、“ENT2”から“0x454E543
2”が、“ENT3”から“0x454E5433”
が、“ENT4”から“0x454E5434”がそれ
ぞれ求められる。
【0025】次に、ラベルは、最大4バイト長であるか
ら、0xFFFFFFFF長の領域を有する検索テーブ
ルが確保される。この検索テーブルに対して、以下行わ
れる処理内容と検索テーブルの状態遷移の関係をまとめ
たものが図5である。図5に示すように、検索テーブル
の内容は、最初に記憶単位毎に、全て“00”で埋め尽
くされる(いわゆるヌル(NULL)クリアされる)
(ステップ501)。
ら、0xFFFFFFFF長の領域を有する検索テーブ
ルが確保される。この検索テーブルに対して、以下行わ
れる処理内容と検索テーブルの状態遷移の関係をまとめ
たものが図5である。図5に示すように、検索テーブル
の内容は、最初に記憶単位毎に、全て“00”で埋め尽
くされる(いわゆるヌル(NULL)クリアされる)
(ステップ501)。
【0026】従って、“ST”、“LP1”、“MO
V”、“ENT1”、“ENT2”、“ENT3”及び
“ENT4”に対応する文字変換アドレスである“0x
5354”、“0x4C5031”、“0x4D4F5
6”、“0x454E5431”、“0x454E54
32”、“0x454E5433”及び“0x454E
5434”のアドレス内容は、全て“00”となる。
V”、“ENT1”、“ENT2”、“ENT3”及び
“ENT4”に対応する文字変換アドレスである“0x
5354”、“0x4C5031”、“0x4D4F5
6”、“0x454E5431”、“0x454E54
32”、“0x454E5433”及び“0x454E
5434”のアドレス内容は、全て“00”となる。
【0027】次に、アセンブラソースの1行目にラベル
“ST”が出現したとき、“0x5354”の位置にフ
ラグ“01”がないので、フラグ“01”が書き込まれ
る(ステップ502)。
“ST”が出現したとき、“0x5354”の位置にフ
ラグ“01”がないので、フラグ“01”が書き込まれ
る(ステップ502)。
【0028】同様に、アセンブラソースの4行目にラベ
ル“LP1”が出現したとき、“0x4C5031”の
位置にフラグ“01”がないので、フラグ“01”が書
き込まれる(ステップ503)。
ル“LP1”が出現したとき、“0x4C5031”の
位置にフラグ“01”がないので、フラグ“01”が書
き込まれる(ステップ503)。
【0029】同様に、アセンブラソースの5行目にラベ
ル“ENT1”が出現したとき、“0x454E543
1”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ504)。
ル“ENT1”が出現したとき、“0x454E543
1”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ504)。
【0030】同様に、アセンブラソースの6行目にラベ
ル“ENT2”が出現したとき、“0x454E543
2”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ505)。
ル“ENT2”が出現したとき、“0x454E543
2”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ505)。
【0031】次に、アセンブラソースの9行目にラベル
“LP1”が出現したとき、“0x4C5031”の位
置にフラグ“01”があるので、ラベル“LP1”は既
に宣言されている事が判明し、2重定義エラーとなる
(ステップ506)。
“LP1”が出現したとき、“0x4C5031”の位
置にフラグ“01”があるので、ラベル“LP1”は既
に宣言されている事が判明し、2重定義エラーとなる
(ステップ506)。
【0032】次に、アセンブラソースの10行目にラベ
ル“ENT3”が出現したとき、“0x454E543
3”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ507)。
ル“ENT3”が出現したとき、“0x454E543
3”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ507)。
【0033】次に、アセンブラソースの13行目にラベ
ル“ENT1”が出現したとき、“0x454E543
1”の位置にフラグ“01”があるので、ラベル“EN
T1”が既に宣言されている事が判明し、2重定義エラ
ーとなる(ステップ508)。
ル“ENT1”が出現したとき、“0x454E543
1”の位置にフラグ“01”があるので、ラベル“EN
T1”が既に宣言されている事が判明し、2重定義エラ
ーとなる(ステップ508)。
【0034】次に、アセンブラソースの14行目にラベ
ル“ENT4”が出現したとき、“0x454E543
4”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ509)。
ル“ENT4”が出現したとき、“0x454E543
4”の位置にフラグ“01”がないので、フラグ“0
1”が書き込まれる(ステップ509)。
【0035】第1実施例の動作フローを図6及び図7を
参照して説明する。図6及び図7は、第1実施例の動作
フローチャートである。図6に示すように、最初に、検
索テーブルが作成されるとともに、検索テーブルの先頭
アドレスが記憶される(ステップ601)。ここでは、
扱う文字列の最大長(前述の説明では4バイト)から領
域の大きさが求められ、その大きさの連続した領域が確
保される。そして、確保した領域は、ゼロクリアし、初
期化される(ステップ602)。そして、アセンブラソ
ースのファイルがオープンされる(ステップ603)。
参照して説明する。図6及び図7は、第1実施例の動作
フローチャートである。図6に示すように、最初に、検
索テーブルが作成されるとともに、検索テーブルの先頭
アドレスが記憶される(ステップ601)。ここでは、
扱う文字列の最大長(前述の説明では4バイト)から領
域の大きさが求められ、その大きさの連続した領域が確
保される。そして、確保した領域は、ゼロクリアし、初
期化される(ステップ602)。そして、アセンブラソ
ースのファイルがオープンされる(ステップ603)。
【0036】ここで、ファイルの終わりか否かが判断さ
れる(ステップ604)。ステップ604で「No」と
判断された場合は、ソースファイルから1行分が読み込
まれる(ステップ605)。
れる(ステップ604)。ステップ604で「No」と
判断された場合は、ソースファイルから1行分が読み込
まれる(ステップ605)。
【0037】ここで、ラベル名があるか否かが判断され
る(ステップ606)。ステップ606で「No」と判
断された場合は、ステップ604に戻る。ステップ60
6で「Yes」と判断された場合は、ラベル名が記憶さ
れる(ステップ607)。そして、後述する「ラベル名
チェック処理」が呼ばれる(ステップ608)。このあ
と、ステップ604に戻る。
る(ステップ606)。ステップ606で「No」と判
断された場合は、ステップ604に戻る。ステップ60
6で「Yes」と判断された場合は、ラベル名が記憶さ
れる(ステップ607)。そして、後述する「ラベル名
チェック処理」が呼ばれる(ステップ608)。このあ
と、ステップ604に戻る。
【0038】ステップ604で「No」と判断された場
合は、ソースファイルをクローズし(ステップ60
9)、検索テーブル領域を開放する(ステップ61
0)。ステップ608から呼ばれる「ラベル名チェック
処理」は、以下のように行われる。
合は、ソースファイルをクローズし(ステップ60
9)、検索テーブル領域を開放する(ステップ61
0)。ステップ608から呼ばれる「ラベル名チェック
処理」は、以下のように行われる。
【0039】まず、ラベル名(文字列)のアドレス変換
が行われる(ステップ701)。そして、検索テーブル
のラベル名を表す文字変換アドレスの内容(文字列情
報)を調べる(ステップ702)。
が行われる(ステップ701)。そして、検索テーブル
のラベル名を表す文字変換アドレスの内容(文字列情
報)を調べる(ステップ702)。
【0040】ここで、文字変換アドレスに内容にフラグ
があるか否かが判断される(ステップ703)。ステッ
プ703で、「有り」と判断された場合は、2重定義の
エラーメッセージを出力し、呼び出し元に復帰する(ス
テップ703)。
があるか否かが判断される(ステップ703)。ステッ
プ703で、「有り」と判断された場合は、2重定義の
エラーメッセージを出力し、呼び出し元に復帰する(ス
テップ703)。
【0041】ステップ703で、「無し」と判断された
場合は、検索テーブルのラベル名を表す文字変換アドレ
スに、フラグを書き込み、呼び出し元に復帰する(ステ
ップ704)。
場合は、検索テーブルのラベル名を表す文字変換アドレ
スに、フラグを書き込み、呼び出し元に復帰する(ステ
ップ704)。
【0042】〔第1実施例の効果〕次に、第1実施例の
効果を、従来の処理による場合と比較して説明する。従
来のスタックエリアにラベル名を記憶していくような処
理だと、ラベル名が出現する度に、スタックエリアのラ
ベル名を比較しながら検索をしなければならず、一般的
なアセンブラプログラムではラベルの数は100〜20
0位になるため、1個のラベル名をチェックするのに1
00〜200回比較処理を行う必要があった。
効果を、従来の処理による場合と比較して説明する。従
来のスタックエリアにラベル名を記憶していくような処
理だと、ラベル名が出現する度に、スタックエリアのラ
ベル名を比較しながら検索をしなければならず、一般的
なアセンブラプログラムではラベルの数は100〜20
0位になるため、1個のラベル名をチェックするのに1
00〜200回比較処理を行う必要があった。
【0043】しかし、第1実施例では各ラベル名を記憶
する場所が予め用意されているため、ラベルが定義され
ているか否かをチェックする比較処理は1回で済む。こ
れは、ラベルの数が何個になっても変わらないため、ラ
ベル名チェック処理を安定したスピードで超高速に行う
ことが可能となる。これに伴って、アセンブル時間の短
縮を図ることが可能となる。
する場所が予め用意されているため、ラベルが定義され
ているか否かをチェックする比較処理は1回で済む。こ
れは、ラベルの数が何個になっても変わらないため、ラ
ベル名チェック処理を安定したスピードで超高速に行う
ことが可能となる。これに伴って、アセンブル時間の短
縮を図ることが可能となる。
【0044】<第2実施例>第2実施例は、アセンブラ
プログラム中に、ラベルが2重定義されているか否かを
検査するとともに、「変数」、「レジスタ」及び「命
令」と同一のラベル名が不正に使用されているか否かも
検査する例である。
プログラム中に、ラベルが2重定義されているか否かを
検査するとともに、「変数」、「レジスタ」及び「命
令」と同一のラベル名が不正に使用されているか否かも
検査する例である。
【0045】〔第1実施例との差異〕第1実施例では、
検索文字列をラベル名に限定し、ラベル名の存在の有無
を示す2値情報(“00”か“01”)を検索テーブル
に格納している。
検索文字列をラベル名に限定し、ラベル名の存在の有無
を示す2値情報(“00”か“01”)を検索テーブル
に格納している。
【0046】第2実施例では、検索対象を「変数」、
「レジスタ」及び「命令」にまで拡大し、これらの検索
対象を一意に識別する情報を検索テーブルに格納する。
具体的には、「変数」、「レジスタ」及び「命令」を表
す情報を各々“0x02”、“0x03”、“0x0
4”とする。即ち、“0x02”、“0x03”、“0
x04”という情報は、文字列に付随する情報になって
いる。
「レジスタ」及び「命令」にまで拡大し、これらの検索
対象を一意に識別する情報を検索テーブルに格納する。
具体的には、「変数」、「レジスタ」及び「命令」を表
す情報を各々“0x02”、“0x03”、“0x0
4”とする。即ち、“0x02”、“0x03”、“0
x04”という情報は、文字列に付随する情報になって
いる。
【0047】なお、各々の付随情報の意味と、アセンブ
ラ側が処理すべき内容は下記のようになる。 “0x00”:文字列はレジスタ及び命令ではなく、ま
た、ラベル名及び変数名としては未定義である。もし、
この文字列がラベル名又は変数名として検索された場合
は、ラベル名又は変数名を表す付随情報に更新する。
ラ側が処理すべき内容は下記のようになる。 “0x00”:文字列はレジスタ及び命令ではなく、ま
た、ラベル名及び変数名としては未定義である。もし、
この文字列がラベル名又は変数名として検索された場合
は、ラベル名又は変数名を表す付随情報に更新する。
【0048】“0x01”:文字列はラベル名として定
義済みである。もし、変数名やラベル名として検索され
た場合は、2重定義エラーとする。 “0x02”:文字列は変数名として定義済みである。
もし、変数名やラベル名として検索された場合は、2重
定義エラーとする。
義済みである。もし、変数名やラベル名として検索され
た場合は、2重定義エラーとする。 “0x02”:文字列は変数名として定義済みである。
もし、変数名やラベル名として検索された場合は、2重
定義エラーとする。
【0049】“0x03”:文字列はレジスタとして定
義してある。もし、変数名やラベル名として検索された
場合は、予約語エラーとする。 “0x04”:文字列は命令として定義してある。も
し、変数名やラベル名として検索された場合は、予約語
エラーとする。
義してある。もし、変数名やラベル名として検索された
場合は、予約語エラーとする。 “0x04”:文字列は命令として定義してある。も
し、変数名やラベル名として検索された場合は、予約語
エラーとする。
【0050】なお、予約語エラーとは、文字列が予約語
なので、ラベル名や変数名としては定義できないことを
表すエラーである。 〔第2実施例の処理内容〕第2実施例の処理内容を図8
を参照して説明する。図8は、第2実施例の処理内容と
検索テーブルの状態遷移をまとめたものである。
なので、ラベル名や変数名としては定義できないことを
表すエラーである。 〔第2実施例の処理内容〕第2実施例の処理内容を図8
を参照して説明する。図8は、第2実施例の処理内容と
検索テーブルの状態遷移をまとめたものである。
【0051】第2実施例の処理内容は、「変数」、「レ
ジスタ」及び「命令」と同一のラベル名が不正に使用さ
れているか否かを検査する処理と第1実施例で述べた処
理とで構成されている。
ジスタ」及び「命令」と同一のラベル名が不正に使用さ
れているか否かを検査する処理と第1実施例で述べた処
理とで構成されている。
【0052】まず、第1実施例同様、図3のアセンブラ
ソースコード中に表れた全てのラベルから、それぞれの
文字変換アドレスが求められる。そして、第1実施例の
ステップ501同様、検索テーブルがヌルクリアされる
(ステップ801)。
ソースコード中に表れた全てのラベルから、それぞれの
文字変換アドレスが求められる。そして、第1実施例の
ステップ501同様、検索テーブルがヌルクリアされる
(ステップ801)。
【0053】次に、CPUの全レジスタ(“AX”、
“CX”等)、全命令(“MOV”、“PUSH”、
“XCHG”等)を表すアドレス域に、それぞれ“0
3”、“04”が割り付けられる(ステップ802)。
図8には、“MOV”の文字変換アドレス“0x4D4
F56”に“04”を割り付けた例が示されている。
“CX”等)、全命令(“MOV”、“PUSH”、
“XCHG”等)を表すアドレス域に、それぞれ“0
3”、“04”が割り付けられる(ステップ802)。
図8には、“MOV”の文字変換アドレス“0x4D4
F56”に“04”を割り付けた例が示されている。
【0054】ステップ803から810までは、第1実
施例のステップ502から509までと同様であるの
で、説明を省略する。次に、“MOV”の文字変換アド
レス“0x4D4F56”の付随情報を見ると、“0
4”が割り付けられているので、“MOV”は命令であ
ることが判明し、ラベル名としては定義できないので予
約語エラーとなる(ステップ811)。
施例のステップ502から509までと同様であるの
で、説明を省略する。次に、“MOV”の文字変換アド
レス“0x4D4F56”の付随情報を見ると、“0
4”が割り付けられているので、“MOV”は命令であ
ることが判明し、ラベル名としては定義できないので予
約語エラーとなる(ステップ811)。
【0055】〔第2実施例の効果〕第2実施例によれ
ば、アセンブラソースのアセンブル処理で、ラベル名や
変数名の2重定義チェックとレジスタや命令の照会を、
1個のテーブルを用いて行うことができる。
ば、アセンブラソースのアセンブル処理で、ラベル名や
変数名の2重定義チェックとレジスタや命令の照会を、
1個のテーブルを用いて行うことができる。
【0056】
【発明の効果】本発明の第1の文字列検索方法によれ
ば、文字列の各文字の文字コードをそのままアドレスと
した文字変換アドレスに基づいて、検索テーブルに文字
列が存在するか否かの情報を格納したことにより、検索
対象文字列の並びから文字列が存在するか否かを検索す
る場合に、検索対象の数にかかわらずに、高速に検索可
能となる効果がある。
ば、文字列の各文字の文字コードをそのままアドレスと
した文字変換アドレスに基づいて、検索テーブルに文字
列が存在するか否かの情報を格納したことにより、検索
対象文字列の並びから文字列が存在するか否かを検索す
る場合に、検索対象の数にかかわらずに、高速に検索可
能となる効果がある。
【0057】また、本発明の第2の文字列検索方法によ
れば、文字列の各文字の文字コードをそのままアドレス
とした文字変換アドレスに基づいて、検索テーブルに文
字列に付随する情報を格納したことにより、文字列検索
時に、その文字列に付随する情報を読み出す場合に、検
索対象の数にかかわらずに、高速に検索可能となる効果
がある。
れば、文字列の各文字の文字コードをそのままアドレス
とした文字変換アドレスに基づいて、検索テーブルに文
字列に付随する情報を格納したことにより、文字列検索
時に、その文字列に付随する情報を読み出す場合に、検
索対象の数にかかわらずに、高速に検索可能となる効果
がある。
【図1】本発明の文字列検索方法の原理図である。
【図2】本発明の文字列検索時の付随情報読出方法の原
理図である。
理図である。
【図3】実施例において、検索すべき文字列の基となる
データを示す図である。
データを示す図である。
【図4】実施例において、文字列(ラベル名)とアドレ
ス変換後のコードとの対応図である。
ス変換後のコードとの対応図である。
【図5】第1実施例における処理内容と検索テーブルの
状態遷移を示す図である。
状態遷移を示す図である。
【図6】第1実施例の動作フローチャート図(その1)
である。
である。
【図7】第1実施例の動作フローチャート図(その2)
である。
である。
【図8】第2実施例における処理内容と検索テーブルの
状態遷移を示す図である。
状態遷移を示す図である。
Claims (2)
- 【請求項1】所定文字数以内で構成された文字列に関す
る文字列情報を格納する検索テーブルを利用する文字列
検索方法において、 前記文字列の各文字の文字コードをそのままアドレスと
した文字変換アドレスを生成し、 生成した文字変換アドレスの基となる文字列が存在する
ことを、文字列情報として、文字変換アドレスに基づい
て、前記検索テーブルに格納し、 ある文字列が存在するか否かを検索する場合に、検索す
べき文字列の各文字の文字コードをそのままアドレスと
した文字変換アドレスを生成し、この文字変換アドレス
に基づくアドレスが割り当てられた前記検索テーブルか
ら文字列情報を読み出すことを特徴とする文字列検索方
法。 - 【請求項2】所定文字数以内で構成された文字列に関す
る文字列情報を格納する検索テーブルを利用する文字列
検索方法において、 前記文字列の各文字の文字コードをそのままアドレスと
した文字変換アドレスを生成し、 生成した文字変換アドレスの基となる文字列に付随すべ
き情報を文字列情報として、文字変換アドレスに基づい
て、前記検索テーブルに格納し、 ある文字列に付随する情報を検索する場合に、検索すべ
き文字列の各文字の文字コードをそのままアドレスとし
た文字変換アドレスを生成し、この文字変換アドレスに
基づくアドレスが割り当てられた前記検索テーブルから
文字列情報を読み出すことを特徴とする文字列検索方
法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6215504A JPH0877197A (ja) | 1994-09-09 | 1994-09-09 | 文字列検索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6215504A JPH0877197A (ja) | 1994-09-09 | 1994-09-09 | 文字列検索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0877197A true JPH0877197A (ja) | 1996-03-22 |
Family
ID=16673498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6215504A Withdrawn JPH0877197A (ja) | 1994-09-09 | 1994-09-09 | 文字列検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0877197A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001028585A (ja) * | 1999-07-13 | 2001-01-30 | Sony Corp | 配信コンテンツ生成方法、コンテンツ配信方法および装置、並びに、コード変換方法 |
-
1994
- 1994-09-09 JP JP6215504A patent/JPH0877197A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001028585A (ja) * | 1999-07-13 | 2001-01-30 | Sony Corp | 配信コンテンツ生成方法、コンテンツ配信方法および装置、並びに、コード変換方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6055543A (en) | File wrapper containing cataloging information for content searching across multiple platforms | |
US4775956A (en) | Method and system for information storing and retrieval using word stems and derivative pattern codes representing familes of affixes | |
JP3178475B2 (ja) | データ処理装置 | |
US6862602B2 (en) | System and method for rapidly identifying the existence and location of an item in a file | |
US5978801A (en) | Character and/or character-string retrieving method and storage medium for use for this method | |
US5497485A (en) | Method and apparatus for implementing Q-trees | |
CA2750609C (en) | Methods and systems for matching records and normalizing names | |
US6279005B1 (en) | Method and apparatus for generating paths in an open hierarchical data structure | |
US20090019356A1 (en) | Intelligent Text Annotation | |
JP2008516347A (ja) | インタロックツリーデータストアの保存および復元 | |
US7831589B2 (en) | Method for retrieving constant values using regular expressions | |
JPH05189490A (ja) | 関数結果をセーブし検索する方法と装置 | |
US6470334B1 (en) | Document retrieval apparatus | |
KR890015115A (ko) | 응용 프로그램 제공방법 및 응용프로그램용 다중 언어 시스템과 데이타 처리시스템 | |
JPH0877197A (ja) | 文字列検索方法 | |
CN113177391A (zh) | 在流式界面中操作光标重定向方法、计算设备及存储介质 | |
EP0454303A2 (en) | Electronic data format conversion system and method | |
JPH0233661A (ja) | 住所自動入力機能付文字処理装置 | |
JP2588261B2 (ja) | Ocrによる住所データベース検索装置 | |
CN110020053A (zh) | 广告主信息的获取方法、装置和计算机可读存储介质 | |
JPH0746362B2 (ja) | 文字列照合方法 | |
JPS59112339A (ja) | 文書検索高速化方式 | |
JPH06162088A (ja) | 有向グラフ生成方法および装置 | |
TWI237779B (en) | Context searching system of computer files and method thereof | |
JP3018579B2 (ja) | 名前検索処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20011120 |