[#19261] lstripped here-document (Re: comments and continuing strings on the next line) — nobu.nakada@...

なかだです。

29 messages 2003/01/01
[#19360] Re: lstripped here-document (Re: comments and continuing strings on the next line) — "K.Kosako" <kosako@...> 2003/01/15

nobu.nakada@nifty.ne.jpさんの

[#19361] Re: lstripped here-document (Re: comments and continuing strings on the next line) — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/01/15

なひです。

[#19364] Re: lstripped here-document (Re: comments and continuing strings on the next line) — nobu.nakada@... 2003/01/17

なかだです。

[#19366] Re: lstripped here-document (Re: comments and continuing strings on the next line) — "NAKAMURA, Hiroshi" <nakahiro@...> 2003/01/17

なひです。

[#19299] [BUG] errno == 0 — Kazuhiro Yoshida <moriq@...>

もりきゅうです。win32だけかもしれません。

22 messages 2003/01/04
[#19301] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19302] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19303] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19304] Re: [BUG] errno == 0 — "U.Nakamura" <usa@...> 2003/01/04

こんにちは、なかむら(う)です。

[#19306] Re: [BUG] errno == 0 — nobu.nakada@... 2003/01/05

なかだです。

[ruby-dev:19422] Re: [] 内での \001 のマッチ

From: matz@... (Yukihiro Matsumoto)
Date: 2003-01-22 21:59:14 UTC
List: ruby-dev #19422
まつもと ゆきひろです

In message "[ruby-dev:19419] Re: [] 内での \001 のマッチ"
    on 03/01/22, UENO Katsuhiro <unnie@blue.sky.or.jp> writes:

|とすると、こんな感じでしょうか。
|[ruby-dev:19380] のパッチと合わせて、やっているのは
|
|  ・コンパイル時、マルチバイト文字でない 0xff 以下の文字は
|    とにかくシングルバイト文字として charset に詰める。
|    (でも UTF-8 回りの仕様を維持するために set_list_bits もしておく)
|
|  ・マッチ時、マッチの対象がマルチバイト文字ならば、できるだけ
|    マルチバイト文字としてマッチを試みる。
|
|の2点だけなので、「凶悪な仕様」にも変化はないはずです。
|
|  p "\001\002\003".scan(/[\001\002\003]/e) # => ["\001","\002","\003"]
|  p "\001\002\003".scan(/[\001-\003]/e)    # => ["\001","\002","\003"]
|  p "\xa4\xa2".scan(/\xa2/e)               # => ["\242"]
|  p "\xa4\xa2".scan(/\xa4/e)               # => ["\244"]
|  p "\xa4\xa2".scan(/[\xa2]/e)             # => ["\242"]
|  p "\xa4\xa2".scan(/[\xa2-\xa4]/e)        # => ["\244","\242"]
|  p "\xa4\xa2".scan(/#{"\xa4\xa2"}/e)      # => ["\244\242"]
|  p "\xc2\x80".scan(/[\200]/u)             # => ["\302\200"]
|  p "\xc2\x80".scan(/\200/u)               # => ["\200"]
|  p "\xc3\x83".scan(/[\303]/u)             # => ["\303\203"]
|  p "\xc3\x83".scan(/\303/u)               # => ["\303"]
|  p "\xc7\xbf".scan(/[\777]/u)             # => ["\307\277"]
|  p "\xc7\xbf".scan(/\777/u)               # => []
|
|# ただ最後の2例はおかしいと思う…

うーむ、/\200/uと/[\200]/uでマッチするものが違う時点でもうお
かしいでしょう。UTF-8に関しては「凶悪な仕様」を完全に停止す
る必要があるようですね。

また、UTF-8の場合には\777のような数値表現がコードポイントを
表現しているかどうかについてもきちんと考察する必要がありそう
です。思ったより根が深いのでもうちょっと考えてみます。

仮に「凶悪な仕様」を完全に止めるとすると

|  p "\001\002\003".scan(/[\001\002\003]/e) # => ["\001","\002","\003"]
|  p "\001\002\003".scan(/[\001-\003]/e)    # => ["\001","\002","\003"]
|  p "\xa4\xa2".scan(/\xa2/e)               # => []
|  p "\xa4\xa2".scan(/\xa4/e)               # => []
|  p "\xa4\xa2".scan(/[\xa2]/e)             # => []
|  p "\xa4\xa2".scan(/[\xa2-\xa4]/e)        # => []
|  p "\xa4\xa2".scan(/#{"\xa4\xa2"}/e)      # => ["\244\242"]
|  p "\xc2\x80".scan(/[\200]/u)             # => []
|  p "\xc2\x80".scan(/\200/u)               # => []
|  p "\xc3\x83".scan(/[\303]/u)             # => []
|  p "\xc3\x83".scan(/\303/u)               # => []
|  p "\xc7\xbf".scan(/[\777]/u)             # => ["\307\277"]
|  p "\xc7\xbf".scan(/\777/u)               # => ["\307\277"]

になるんですかねえ。

                                まつもと ゆきひろ /:|)

In This Thread

Prev Next