[#954] Rational — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

23 messages 1996/10/30
[#955] Re: Rational — matz@... (Yukihiro Matsumoto) 1996/10/30

まつもと ゆきひろです.

[#968] Re: Rational 1996/10/31

けいじゅ@SHLジャパンです.

[ruby-list:936] Re: hajimemashite

From: sinara@...
Date: 1996-10-30 04:54:52 UTC
List: ruby-list #936
原です。

> 斎藤@東大電子情報です.

> 基本的にはネストになっているのでネストの構造を読み込む方法があればそれ
> で解決するかとは思うんですけど,正規表現ではネストの構造は取り出せそう
> にないですし….なにか良い方法は無いのでしょうか.

確かに正規表現では捉えられないですね。ネストの深さの上限が予め
分かっていれば、なんとかならないこともないですが。

-----^ read_nest.rb
#!/usr/local/bin/ruby
$data =
'title{
	item-1 = "1",
	item-2 = "2",
	subtitle-a{
		item-a1 = "a-1",
		item-a2 = "a-2"
	}
	subtitle-b{
		item-b1 = "b-1",
		item-b2 = "b-2",
		subtitle-c{
			item-c1 = "c-1",
			item-c2 = "c-2"
		}
	}
}
'
$nestbra = "[^{}]*"
2.times{ $nestbra = "[^{}]*({#$nestbra}[^{}]*)*" }

def read_struct(str, name = nil)
  while str.sub!(/([\w\-]+)\s*{(#$nestbra)}/o, '')
    read_struct($2, name + "::" + $1)
  end
  while str.sub!(/([\w\-]+)\s*=\s*("[^"]*")/, '')
    print name + ".#$1 = #$2\n"
  end
end

str = $data.gsub(/\n/, '')
read_struct(str)
-----$ read_nest.rb

かなり乱暴ですね。^^;
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
                           Shin-ichro Hara(Nagaoka Univ.of Tech.)

In This Thread