From: "たけ (tk)" Date: 2000-11-15T02:03:36+09:00 Subject: [ruby-dev:11518] Re: parser I18N <= Re: Ruby I18N たけ(tk)です。  えと、スクリプトの記述で扱われている文字コード系をパーサーに認識させる 方法ですよね。 (1)String オブジェクトには CharCodeType (のサブクラス)のオブジェク トをアタッチさせることが出来る。(これ、前提)。 (2)CharCodeType_EUC_JP とか CharCodeType_SJIS、CharCodeType_UTF8 など は組み込みで入っており、パーサも認識できるとする。 (3)何らかの記述子により、パーサに「スクリプトで使用する文字コード系」 を知らせることが出来るものとする。(スクリプト文字コード系指定記述子)。 (4)パーサが文字列のリテラルを見つけたときには String クラスのオブジェ クトを作成し、データをそのままコピーして入れ、(3)で指定された文字コー ド系の CharCodeType クラスのオブジェクトを文字列オブジェクトにアタッチす る。(String クラス=バイト列文字列)。  −− (5)スクリプト中で文字コード系を変えたい場合(など考えにくいが)(3) のスクリプト文字コード系指定記述子はどこにおいても良いものとする。その後 のパースに影響する。通常はファイルの先頭部分に置く。 (6)スクリプト文字コード系指定記述子はファイル毎に指定する。一つのファ イルの解析がはじまる前にデフォルトにリセットされる。指定がなければデフォ ルトの文字コード系の CharCodeType が使用される。一つのファイルの解析が終 わったら require か include で入れ子状にパースされたものであれば、push pop で親の状態に戻す。 −− (7)EUCで記述されたスクリプトの文字列はEUCのままである。SJIS しか表示できないプラットフォームでは、その文字列をそのままでは表示するこ とは出来ない。表示するためには、何らかの時点でプラットフォームで表示可能 な文字コード系に変換しなければならない。  どの時点で変換するかは別として、変換可能かどうかはスクリプトの文字列オ ブジェクトにアタッチされた CharCodeType(CharCodeType_EUC_JP)もしくは表 示を行う文字コード系の CharCodeType(CharCodeType_SJIS) が知っている。 変換可能であれば、char_code_type.convert_to で目的の文字コード系の文字列 に変換して、表示できるようになる。  以上、たけ(tk)プランでした。(パーサでこういうことが出来るのかどうかは 知らないです、汗)。 たけ(tk) ggb03124@nifty.ne.jp http://member.nifty.ne.jp/take_tk