Bruce.さん < こん??は でび@電源ファンうならせて 夜の闇の中再起動しまくり です
# トラブル対応の連続で死にそうでした。
# 自宅警備員は勝ち組、と確信しました。
On Tue, 03 Mar 2009 01:25:18 +0900
"Bruce." <kbk@...> wrote:
> > こういうの、一時的にフックして置いて、置換させないという
> > ような方法は何か無いのかなぁ…と、もう何年も探しています。
> >
> > そこで思い出すのがsedの
> >
> > y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
> >
> > なんていう便利な命令です。
> ASCIIの範囲に限れば、思い切り単純です。
> たとえば
> ABCDE → vwxyz
> という置換を行う場合
> というテーブルを組み立てて、置換の対象となる文字列を頭からなめていって
>
> newstr[i] = work[oldstr[i]]
>
> を順に文字列の終端までやるだけです。
> 文字集合が大きいものになるとこの手が使えない、使いにくいのは自明ですね。
work[oldstr[i]]は、「配列の配列」ですか?
でもこの例だと、大文字と小文字の場合は重複しないですよね?
> 事情が良くわかりませんが、
例えば、「Rot13をテーブル定義の置換でやる場合、どうすんの?」
ってことです。
先に置換しちゃったものを、その後の定義で、もう一度
置換されちゃうと困るよねぇ?、と。
trとかで、それが上手く動いているのが、どうしても理解も
納得もできないのですよ。
wikipediaにある「Pascalによる原理的実装」の例では、
バイナリそのものを演算していじっているようです。
テーブルによる置換の実装の例そのものではなさそう…。
--------------------------------------------
> 事情が良くわかりませんが、そこまである文字が出てくる「文脈」に
> 依存するのなら話は簡単じゃないと思いますが。
この話題のずっと先には、「翻訳ソフトは、内部でどんな
処理をしているんだろう?」という疑問があります。
そんな話題をabcでやるのが適切かどうかはわかりません。
また、今の所は、「自分で実装できるようになりたい!」という
よりも、「リクツとしては、どういう考え方なの?」という
探求心の段階なのですが。
(そりゃ、自分で実装できればカッコイイなぁ、とは思いますが、
オノレの“分”を知るということも大切ですな…。)
でび http://davi.txt-nifty.com/1984/