JPH03144735A - インタプリタの言語処理方式 - Google Patents

インタプリタの言語処理方式

Info

Publication number
JPH03144735A
JPH03144735A JP28382589A JP28382589A JPH03144735A JP H03144735 A JPH03144735 A JP H03144735A JP 28382589 A JP28382589 A JP 28382589A JP 28382589 A JP28382589 A JP 28382589A JP H03144735 A JPH03144735 A JP H03144735A
Authority
JP
Japan
Prior art keywords
character
byte
character string
string
characters
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.)
Pending
Application number
JP28382589A
Other languages
English (en)
Inventor
Yukiko Hashimoto
橋本 ユキ子
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP28382589A priority Critical patent/JPH03144735A/ja
Publication of JPH03144735A publication Critical patent/JPH03144735A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〈産業上の利用分野〉 本発明は、1バイトコードで表現される1バイトコード
系文字と2バイトコードで表現される2バイトコード系
文字とを含む文字列を処理するインタプリタの言語処理
方式(以下、単に言語処理方式という、)に関し、この
言語処理方式はインタプリタとして動作する言語処理プ
ロセッサ上の言語(vIに日本語)処理機能の一部を構
成する。
(従来の技術) ところで、従来においては、コンピュータシステムで利
用されるコード体系には英数字(A、B。
C1・・・、1,2.・・・)、特殊記号(+−,−、
×。
$、・・・)、制御文字などから成る1バイトで表わさ
れる1バイトコード系の文字(以下、ANK文字という
、〉と日本語文字(漢字、ひらがな、カタカナなど)な
どの1バイトではその文字の種類が多く表わすことので
きない2バイトコード系の文字(以下、日本語文字とい
う、)とが存在する従来のコンピュータシステムにおけ
る日本諸処FJ機能では、文字列操作が複雑になるため
、ANK文字と日本語文字との混在を許さない場合が多
かった。
ANK文字と日本語文字との混在を許す場合もあるが、
かかる混在を許す場合においては、文字列中の文字位置
を数える場合は、文字単位ではなくてバイト単位に数え
て例えば“AあA”という文字列の2文字目をとり出す
と、“あ”ではなく2バイトコード文字“あ”の前半の
1バイトが返却される。この場合、文字位置を意識した
文字列処理を行うときには、ユーザが自分でANK文字
は1バイト、日本語文字は2バイトと数えてバイト単位
に処理を行うことが必要であった。
これでは不便なため、日本語文字も、ANK文字も同じ
1文字と数え、文字列中に混在が許されるように文字列
処理が拡張されたものがある。
この種の日本語処理機能では、この文字列処理と実現す
るために日本語文字列及び混在文字列は全て各文字を2
バイトで表現するようにしている。
即ち、第5図に示すように日本語文字は、その2バイト
文字コードで表現し、日本語文字と混在するANK文字
はその1バイト文字コードの先頭に1バイトのθ(数字
のOではない)を付加した2バイトコードからなる文字
列で表現し、文字列オブジェクトと生成している。以下
、この文字列を2バイト文字列と呼ぶ。この実現方式を
採用した場合には、第6図に示すように文字列データの
全てを2バイトで実現する2バイト文字列方式と、第7
図に示すようにANK文字のみから成る文字列は1バイ
ト文字列とすると共に日本語文字のみから成る文字列と
ANK文字を日本語文字の混在した文字列は2バイト文
字列で実現する1バイト兼2バイト文字列方式とが考え
られる。
ここで、上述の2バイト文字列を導入すれば混在文字列
中の全ての文字を2バイト単位で扱うことができ便利で
ある。また1バイト兼2バイト文字列方式においては、
通常の場合に、文字列を生成したときは、ANK文字は
1バイトのままの文字列として生成し、かつ、日本語文
字は2バイトのt、まの文字列を生成しておき、文字位
置を意識した文字列処理を行うときにANK文字を2バ
イト文字列に変換する処理を行っている。
(発明が解決しようとする課題) 上述した従来の言語処理方式には以下に述べるような欠
点がある。
すなわち、上述した2バイト文字列方式では、文字列が
全て2バイトで表わされているので、文字列処理におけ
る文字位置の認識は単純に2バイト単位に行えば良いの
で実行効率はあまり低下しないが1バイトで済むANK
文字のみから成る文字列も全て2バイト表現となるため
メモリ効率が著しく低下するという欠点がある。
また、上述した1バイト兼2バイト文字列方式では、A
NK文字は通常1バイトで記述されるのでメモリ効率の
低下はあまりないが、文字列生成時に1バイト文字列を
生成するか、2バイト文字列を生成するかを判断する処
理が必要となり、また1バイト文字列と2バイト文字の
間で特別の文字列処理を行うことになるので、文字列処
理が複雑になるなどの点から、処理効率が低下するとい
う欠点がある。
以下に上記欠点を具体的な例をあげて説明する。
第5図に示すように、“NEC日本電気”という文字列
を入力して文字列オブジェクトを生成する場合NECと
いう文字を読んでいる間は1バイト文字列だと判断を下
しているが、日という日本語文字を認識した時点で先に
入力したNECも0NOBOCと変換して、2バイト文
字列を生成しなければならない。
また、lバイト文字列に2バイト文字列を連結したり、
1バイト文字列の文字を2バイト文字で置換したりする
ときは、lバイト文字列を2バイト文字列に変換してか
ら連結及び置換の処理を行わなければならない。
さらに、2バイト文字列からこの文字列中の部分文字列
をとり出す場合には、とり出した部分文字列がANK文
字のみから成る2バイト文字列になることがある、たと
えば、前述の第5図の文字列”NEC日本電気”の1文
字目がら3文字とり出した文字列オブジェクトは0NO
EOCとなっており、通常に入力された1バイト文字列
″NEC″と比較しようとした場合には“0NOEOC
”と“NEC”とのどちらか一方のフォーマットを変更
して両者のフォーマットが等しくなるような処理を行わ
なければならない。
このように具体的な例示のごとく、文字列の要素を直接
アクセスするような文字列処理を行う場合には、1バイ
ト文字列と2バイト文字列に変換する操作や、結果とし
て生成されたANK文字のみの2バイト文字列と対応す
る1バイト文字列間の操作などが必要となり文字列処理
の負担が大きくなるという欠点がある。
本発明は、上記欠点を解消することをB題とするもので
あって、lバイトコード系文字列を1バイトのままメモ
リ上に格納することができメモリ効率を高めることがで
きると共に、1バイトコード系文字列と2バイトコード
系文字列とが混在した文字列中の文字の位置を容易にバ
イト単位に計算することができ文字列操作の処理効率を
上げることができるインタプリタの言語処理方式を提供
することを目的とする。
(課題を解決するための手段) 上記課題は、1バイトコードで表現される1バイトコー
ド系文字と2バイトコードで表現される2バイトコード
系文字とを含む文字列を処理するインタプリタの言語処
理方式において、前記文字列の文字を構成する文字コー
ドが格納される文字列オブジェクトと、該文字列オブジ
ェクトの各文字コードのバイト数が格納される文字属性
テーブルとからなる文字列データを生成する文字列デー
タ生成手段と、 前記文字列オブジェクトの文字列における基準位置から
各文字までの部分文字列に対応する前記文字属性テーブ
ルにおけるバイト数の合計値を求めて、該合計バイト数
を前記各文字のバイト位置とするバイト位置計算手段と を備えることにより解決できる。
〈作用) 本発明によれば、文字列データ生成手段により、文字列
の文字を構成する文字コードをメモリに格納して文字列
オブジェクトを生成すると共に、同じく文字列データ生
成手段により、前記文字列オブジェクトの各文字コード
のバイト数をメモリに格納して文字属性テーブルを生成
する。そして、文字列オブジェクトの文字列における基
準位置から各文字までの部分文字列のバイト位置を求め
ようとした場合には、バイト位置計算手段により前記部
分文字列に対応する文字属性テーブルの合計値を求める
。この合計バイト数が前記各文字のバイト位置になる。
(実施例) 以下に図面を参照して本発明の一実施例について説明す
る。
第1図は本実施例の構成を表わすブロック図である。第
1図に示すように、文字列x、y、z(AI、A2.A
3)に対して、文字列データ(A4.A5.A6)が用
意されている1文字列データ(A4.A5.A6)は、
各文字列を構成する文字列コードをそのまま格納して文
字列の実体を表わす文字列オブジェクト(A8.AIO
A12)と、文字列中の文字単位に2ビツトのデータが
割当てられておりその2ビツトのデータによりANK文
字か日本語文字か否を表す文字属性テーブル(A7.A
9.Al l )とから構成されている0文字列処理手
段(A13)は、文字列を生成する際は文字列を構成す
る文字コードをそのままデータとしてメモリ上に格納し
、文字列オブジェクト(A8.AIO,A12)を生成
し、さらに各文字単位に日本語か、ANK文字かを判定
し、日本語文字なら1.1をANK文字なら0.1の2
ビツトを要素とする文字属性テーブル(A7.A8.A
t 1 )を生成する文字列データ生成手段(A14)
と、文字列中のある文字をアクセスするために文字数で
指定された文字位置をバイト単位に数えたバイト位置に
換算するバイト位置計算手段(A15)とを備える。な
お、第1図中において各文字属性テーブル(A7.A9
゜A11)と文字列オブジェクト(A8.AIO。
A12)の下に付けられた数字(A16.A17゜A1
8.A19.A20.A21>が各々対応する文字位置
を示す、n文字目の文字の文字オブジェクト内のバイト
位置を計算する場合には、文字属性テーブル(A7.A
9.All>の先頭ビットから(n−1)X2ビツトを
全て加えることによって求めることができる。ただし、
ここで得られる文字オブジェクト内のバイト位置は先頭
をO番目と数えた相対バイト数である6例えば第1図中
の文字列X“日本1の山” (A1)の5文字目“山”
のバイト位置は、文字属性テーブル(A7)における先
頭から8((5−1)X2+ビツト(1,1,1,1,
0,1,1,1,)の各ビットを全て加えると7となり
、7バイト目から“山“が始まることがわかる0次に、
アクセスしようとしている文字がANK文字から1バイ
ト、日本語文字なら2バイトであるので、アクセスする
のに何バイトをとり出したら良いかという判断をするに
は、文字属性テーブル(A7.A9.Al l )の対
応する文字位置の2ビツト分のデータを加える。この合
計値分のバイト数をとり出せばよい。
たとえば、上記した文字列Xから“山”をとり出す場合
には、文字属性テーブル(A7)の5文字目に対応する
2ビツト(1,1)を加えて2となり2バイト分取り出
せば“山”が取り出せることになる。同様に第1図に示
す文字列Yの5文字目の“山”の場合は文字属性テーブ
ル(A9)の1.1,1,1,1,1,1.1を加えて
8バイト目から1,1を加えた2バイト分となり、第1
図の文字列2の5文字目“3”の場合は0,1゜0.1
,0,1,0.1を加えて4バイト目から0.1を加え
た1バイト分となる0次に本実施例の言語処理方式によ
る文字列操作について第2図〜第4図に基づいて具体的
に説明する。
まず、第2図に基づいて文字列中から部分文字列をとり
出す処理を説明する。
文字列A(Bl)の2文字目から4文字をとり出し、“
EC日本”という部分文字列B (B2)を新しく生成
する場合を考える。とり出す部分文字列の先頭位置を求
めるため、文字列A中の2文字目“E″の相対バイト数
を求めるとすなわち、(2−1)x2=2ビットである
ので、文字属性テーブル(B3)の先頭の2ビット0.
1の各ビットを加え1バイト目が相対バイト数になる0
次に、とり出す2文字目から4文字のバイト数を計算す
る。このバイト数は、文字属性テーブルB3の2文字目
のビットから4文字分を加えることによって求まる。す
なわち、o、1,0,1,1゜1.1.1を加えて6バ
イトとなる。そしてこの後に、文字属性テーブル(B3
)の相対バイト数としての2ビツト目から8ビツトをと
り出して文字属性テーブル(B5)を生威し、さらに文
字列オブジェクト(B4)の相対バイトとしての4バイ
ト目から6バイトをとり出した文字列オブジェクト(B
6)を生成することによって部分文字列B(B2)が作
成できる。
次に、2つ以上の文字を単に連結する場合には第3図に
示すように、単に文字属性テーブルと文字列オブジェク
トを各々連結した文字列データを作成すれば良い。
i&後に文字列中の文字をある文字で置換する場合を第
4図に示す、なお、この場合、文字列中のバイト数が置
き換えたい文字と置き換えられる文字とで一致していれ
ば単に置換すればよく特に問題はない、ここでは、一致
していない場合について説明する。かかる場合には、新
しい文字列オブジェクトを生成しなければならない、ま
た、この場合、もとの置き換えられる文字列のアドレス
を変更しないようにしなければならないのなら、文字列
オブジェクトをさす文字列ヘッダをもつような構造を生
成するすればよい、たとえば、第4図に示すように、文
字列C“日本1の山”の3文字目“1”を“−”に置換
する場合を説明する。第4図中に示すように、文字列C
をさすデータ(Dl)がある、データD1のさしている
のが文字列ヘッダ(B2)であり、第4図中で実線の矢
印で示すように、その文字列ヘッダD2から文字列オブ
ジェクト(B3)をさしている0文字列Cの3文字目も
数字“1nを漢字の“−”に直接置換する場合は、“日
本一の山′″という文字列オブジェクト(D4)を生成
し、第4図中で点線の矢印りうで示すように、文字列ヘ
ッダD2が文字列オブジェクトD4をさすように変換す
る。
(発明の効果) 以上に説明したように、本発明の言語処理方式によれば
次に述べるような効果が得られる。
まず、文字列中の文字がANK文字か日本語文字かを表
わす文字属性と、そのバイト数とを表わす文字属性テー
ブルを備えており、この文字属性テーブルを使用して文
字数で指定された文字位置とバイト単位に数えたバイト
位置に変換する処理を行うことによってANK文字を1
バイトのままで2バイトにすることなくメモリ上に格納
することができ、メモリ効率が向上するという効果があ
る。
また、文字コードのよyi1バイト文字、2バイト文字
を混在した文字列中の文字の位置を前記文字属性テーブ
ルを利用することによって文字位置を容易にバイト単位
に計算することができ、文字列操作の処理効率を上げる
こともできるという効果がある。
さらに、日本語文字とANK文字を混在して文字列中に
含めることができるようになり、日本語文字1文字をA
NK文字1文字と同等に1文字として扱うような文字列
処理を実現することができるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実肢例の構成を示す1077図、第
2図は第1図の実施例において文字列データから部分文
字列をとり出す処理を説明するための説明図、第3図は
第1図の実施例において2つの文字列データを連結する
処理を説明するための説明図、第4図は第1図の実施例
において文字列データの一部を他の文字で置換する処理
を説明するための説明図、第5図は従来の2バイト文字
列を示す説明図、第6図は従来の2バイト文字列方式を
示す説明図、第7図は従来の1バイト兼2バイト文字列
を示す説明図である。 AI、A2.A3.Bl、B2・・・文字列、A7A9
.At 1.B3.B5・・・文字属性テーブル、A8
.AIO,AI2.  B4.  B6.D3.D4・
・・文字列オブジェクト、A13・・・文字列処理手段
、A14・・・文字列データ生成手段、A15・・・バ
イト位置計算手段、Dl・・・文字列Cをさすデータ、
D2・・・文字列ヘッダ、D5・・・文字列オブジェク
トをさすポインタ。

Claims (1)

  1. 【特許請求の範囲】 1バイトコードで表現される1バイトコード系文字と2
    バイトコードで表現される2バイトコード系文字とを含
    む文字列を処理するインタプリタの言語処理方式におい
    て、 前記文字列の文字を構成する文字コードが格納される文
    字列オブジェクトと、該文字列オブジェクトの各文字コ
    ードのバイト数が格納される文字属性テーブルとからな
    る文字列データを生成する文字列データ生成手段と、 前記文字列オブジェクトの文字列における基準位置から
    各文字までの部分文字列に対応する前記文字属性テーブ
    ルにおけるバイト数の合計値を求めて、該合計バイト数
    を前記各文字のバイト位置とするバイト位置計算手段と を備えることを特徴とするインタプリタの言語処理方式
JP28382589A 1989-10-30 1989-10-30 インタプリタの言語処理方式 Pending JPH03144735A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28382589A JPH03144735A (ja) 1989-10-30 1989-10-30 インタプリタの言語処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28382589A JPH03144735A (ja) 1989-10-30 1989-10-30 インタプリタの言語処理方式

Publications (1)

Publication Number Publication Date
JPH03144735A true JPH03144735A (ja) 1991-06-20

Family

ID=17670642

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28382589A Pending JPH03144735A (ja) 1989-10-30 1989-10-30 インタプリタの言語処理方式

Country Status (1)

Country Link
JP (1) JPH03144735A (ja)

Similar Documents

Publication Publication Date Title
US5657259A (en) Number formatting framework
JPS63316231A (ja) コンピユーター・ソーテイングを容易にする方法
JPH03144735A (ja) インタプリタの言語処理方式
JP2624484B2 (ja) 中国語の入力処理方法
JPS59184941A (ja) 漢字コ−ド変換方法
JPS5916039A (ja) カナ漢字変換方法
JP2865446B2 (ja) 文章処理装置
JPH052578A (ja) かな漢字変換方式
JP2610028B2 (ja) 濁音及び半濁音変換処理装置
JPS63133241A (ja) デ−タ格納方法
JPH04153880A (ja) 文字列の部分列抽出処理方式
JPH08212120A (ja) ファイル名管理システム
JPH04290164A (ja) 単語辞書方法
JPS6140664A (ja) 同音語選択方式
JPH05323936A (ja) 文字処理装置
JPH02273868A (ja) 文字列データ検索方式
JPH0239321A (ja) データ処理装置
JPS6260855B2 (ja)
JPH1063746A (ja) 表データ自動生成装置
JPS6115268A (ja) かな漢字変換装置
JPS5995641A (ja) 文字変換装置
JPS61112243A (ja) プログラム縮小装置
JPH08297658A (ja) 日本語文字並び換え方法とその装置
JPH0456350B2 (ja)
JPS61168039A (ja) コ−ド変換処理方式