[#11904] to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@...

30 messages 1999/02/04
[#11905] Re: to_i,to_s の素朴な疑問 — Masaki Fukushima <fukusima@...> 1999/02/04

福嶋です。

[#11915] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@... 1999/02/05
[#11917] Re: to_i,to_s の素朴な疑問 — Masaki Fukushima <fukusima@...> 1999/02/05

福嶋です。

[#11931] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@... 1999/02/05
[#11943] Re: to_i,to_s の素朴な疑問 — "INOUE Katsuyuki" <inoue@...> 1999/02/05

井上%といいます。

[#11980] Re: to_i,to_s の素朴な疑問 — HQss_YasuiS/hq_ss@... 1999/02/08

[#12000] how to make class? — "Kikutani, Makoto" <kikutani@...>

なんだかデータ変換で難しい話が続いているので、初心者の

53 messages 1999/02/10
[#12001] how to make class? — gotoken@... (GOTO Kentaro) 1999/02/10

ごとけんです

[#12002] What's DelegateClass ? (Re: how to make class?) — "Kikutani, Makoto" <kikutani@...> 1999/02/10

自分で始めたスレッドながらいきなりサブジェクトを変える奴。

[#12003] What's DelegateClass ? (Re: how to make class?) — gotoken@... (GOTO Kentaro) 1999/02/10

ごとけんです

[#12012] Re: What's DelegateClass ? (Re: how to make class?) — matz@... (Yukihiro Matsumoto) 1999/02/11

まつもと ゆきひろです

[#12017] Re: What's DelegateClass ? — Minero Aoki <aamine@...> 1999/02/11

あおきです。

[#12090] !=~ — "Kikutani, Makoto" <kikutani@...>

わははそうか、今まで =~ の否定は !=~ だと思っててて

42 messages 1999/02/15
[#12091] Re: !=~ — Yasuhiro Fukuma <yasuf@...> 1999/02/15

福間@福岡 です。

[#12092] Re: !=~ — ttate@... 1999/02/15

立石です。

[#12097] Re: !=~ — matz@... (Yukihiro Matsumoto) 1999/02/16

まつもと ゆきひろです

[#12099] Re: !=~ — gotoken@... (GOTO Kentaro) 1999/02/16

ごとけんです

[#12100] Re: !=~ — Kikutani Makoto <kikutani@...> 1999/02/16

Tue, Feb 16, 1999 at 10:40:46AM +0900 において

[#12101] Re: !=~ — gotoken@... (GOTO Kentaro) 1999/02/16

ごとけんです

[#12102] Re: !=~ — ttate@... 1999/02/16

立石です。

[#12103] Re: !=~ — gotoken@... (GOTO Kentaro) 1999/02/16

ごとけんです

[#12108] Re: !=~ — EGUCHI Osamu <eguchi@...> 1999/02/16

えぐち@エスアンドイー です。

[#12112] Re: !=~ — gotoken@... (GOTO Kentaro) 1999/02/16

ごとけんです

[#12116] Re: !=~ — EGUCHI Osamu <eguchi@...> 1999/02/16

えぐち@エスアンドイー です。

[#12122] Re: !=~ — gotoken@... (GOTO Kentaro) 1999/02/17

ごとけんです

[#12138] Re: !=~ — matz@... (Yukihiro Matsumoto) 1999/02/17

まつもと ゆきひろです

[#12156] Re: !=~ — EGUCHI Osamu <eguchi@...> 1999/02/18

えぐち@エスアンドイー です。

[#12157] Re: !=~ — matz@... (Yukihiro Matsumoto) 1999/02/18

まつもと ゆきひろです

[#12168] Re: !=~ — EGUCHI Osamu <eguchi@...> 1999/02/18

えぐち@エスアンドイー です。

[#12171] Re: !=~ — matz@... (Yukihiro Matsumoto) 1999/02/19

まつもと ゆきひろです

[#12117] INET client — "Kikutani, Makoto" <kikutani@...>

あおきさんのINET clientへの質問コーナー

51 messages 1999/02/16
[#12120] Re: INET client — "Kikutani, Makoto" <kikutani@...> 1999/02/16

Wed, Feb 17, 1999 at 02:24:11AM +0900 において

[#12183] ruby-mode + font-lock-mode — SONODA Yoshihide (園田 吉英) <ysonoda@...>

はじめまして、園田と申します。

21 messages 1999/02/19
[#12185] Re: ruby-mode + font-lock-mode — Shugo Maeda <shugo@...> 1999/02/19

前田です。

[#12188] Re: Meeting2000 リリースします — 松尾尚典 <matsuo_hisanori@...21.odn.ne.jp>

松尾です。

31 messages 1999/02/19
[#12245] Re: Meeting2000 リリースします — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/02/23

ruby-listの皆様,

[#12249] Re: Meeting2000 リリースします — matz@... (Yukihiro Matsumoto) 1999/02/23

まつもと ゆきひろです

[#12269] Re: Meeting2000 リリースします — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/02/23

ruby-listのみなさん,

[#12272] Re: Meeting2000 リリースします — Takahiro Maebashi <maebashi@...> 1999/02/23

前橋です。

[#12276] HTTP/1.1 client ( was Re: Meeting2000 リリースします ) — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/02/23

ruby-listのみなさん,

[#12521] http-access (HTTP/1.1 client) — Takahiro Maebashi <maebashi@...> 1999/03/03

前橋です。

[#12217] It wants to install mon_ruby — moochan <moochan@...>

moochanです。

27 messages 1999/02/22
[#12222] Re: It wants to install mon_ruby — Shugo Maeda <shugo@...> 1999/02/22

前田です。

[#12230] Re: It wants to install mon_ruby — moochan <moochan@...> 1999/02/23

moochanです.

[#12248] tempfile — Kikutani Makoto <kikutani@...>

tempファイルをよく作るのですが、

19 messages 1999/02/23

[#12301] Meeting2000-0_92 — Toshiki Komai <komai@...4u.or.jp>

29 messages 1999/02/23
[#12303] Re: Meeting2000-0_92 — hisanori@... 1999/02/24

松尾です。おはようございます。

[#12305] Re: Meeting2000-0_92 — Shin-ichiro Hara <sinara@...> 1999/02/24

原です。

[#12306] Re: Meeting2000-0_92 — hisanori@... 1999/02/24

From: Shin-ichiro Hara <sinara@blade.nagaokaut.ac.jp>

[#12307] Re: Meeting2000-0_92 — Shin-ichiro Hara <sinara@...> 1999/02/24

原です。

[#12310] Re: Meeting2000-0_92 — hisanori@... 1999/02/24

From: Shin-ichiro Hara <sinara@blade.nagaokaut.ac.jp>

[#12322] Re: Meeting2000-0_92 — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/02/24

ruby-listのみなさま, && なひ,と言います.

[#12309] [REQ] rlex.rb — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

44 messages 1999/02/24
[#12350] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/02/24

In message <199902231347.WAA00565.keiju@bc.mbn.or.jp>

[#12465] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/02/26

In message <199902241316.WAA03663@mail1.os.xaxon.ne.jp>

[#12466] Re: [REQ] rlex.rb — keiju@... (石塚圭樹 ) 1999/02/26

けいじゅ@日本ラショナルソフトウェアです.

[#12470] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/02/26

In message <199902261443.XAA10667.keiju@cupmail0.rational.com>

[#12497] Re: [REQ] rlex.rb — keiju@... (石塚圭樹 ) 1999/03/01

けいじゅ@日本ラショナルソフトウェアです.

[#12501] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/03/01

In message <199903010918.SAA16824.keiju@bc.mbn.or.jp>

[#12503] Re: [REQ] rlex.rb — keiju@... (石塚圭樹 ) 1999/03/01

けいじゅ@日本ラショナルソフトウェアです.

[#12511] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/03/02

In message <199903011352.WAA17487.keiju@bc.mbn.or.jp>

[#12526] Re: [REQ] rlex.rb — keiju@... (石塚圭樹 ) 1999/03/04

けいじゅ@日本ラショナルソフトウェアです.

[#12540] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/03/04

In message <199903040444.NAA21095.keiju@bc.mbn.or.jp>

[#12664] Re: [REQ] rlex.rb — keiju@... (石塚圭樹 ) 1999/03/09

けいじゅ@日本ラショナルソフトウェアです.

[#12691] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/03/09

In message <199903090457.NAA00259.keiju@bc.mbn.or.jp>

[#12719] Re: [REQ] rlex.rb — keiju@... (石塚圭樹 ) 1999/03/10

けいじゅ@日本ラショナルソフトウェアです.

[#12729] Re: [REQ] rlex.rb — kjana@... (YANAGAWA Kazuhisa) 1999/03/10

In message <199903091600.BAA02510.keiju@bc.mbn.or.jp>

[#12315] RE: (閑話) 「 XML 開発者の日」にて Ruby 紹介ありですね。 — 助田 雅紀 <masaki.suketa@...>

助田です.

13 messages 1999/02/24

[ruby-list:11893] Re: [racc] help me

From: kjana@... (YANAGAWA Kazuhisa)
Date: 1999-02-03 13:47:36 UTC
List: ruby-list #11893
In message <199902030923.SAA10248.keiju@bc.mbn.or.jp>
keiju@rational.com (石塚圭樹 ) writes:

> >> でも, 私の実力ではrubyの字句を完全に識別できるような複雑な正規表現は
> >> 書けないし(^^;;;
> >
> >結構簡単に書けると思いますけど.文字列とコメントにだけ気をつけてやれば
> >良いわけで.

こんなん書きましたけど,here document を考えたら突然どうにもならん程難
しいような気がしてきました.parser と協調しないと無理そう.


> ># というりくつで適当に書いたのが前に出した scanner generator.ちなみに
> ># あの後ちょっといじりました.誰か興味あります?
> 
> こっちには興味ありますので, uploadしてもらえるとありがたいです.

# メーリングリストサーバにメールを出すのは upload ととらえられなくもな
# いが結局それがクライアントたる参加者のもとに配られることを考えると,
# などというばか話はおいといて (^^;

[ruby-list:11458] で出したものをほんのちょっと書き換えただけです.だけ
なのに diff -u でも 80 行近くになるのはどうも.... まるのままつけても
134 行とかなのに.

    * GOTO ですぐに実行中のアクションから抜けていたのをやめました.
    * RETURN のデフォルトモードを現在のモードにしました.
      (前のは :default にしてた)
    * <default> の前に書いたコードは本当に「書いたまま」生成される
      Scanner に取り込まれるようになりました.
      (前のは initialize の中にコピーしてた)
    * これにともない `init' というメソッドを定義しておくとこれが
      initialize から呼び出されるようにしました.

テンプレートをいれちゃうより継承させた方がいいのかな....

# まだ名前が無い.まあいちおう `rlex.rb' という名前で使ってたりはする
# んですが.サンプルは実際に使っているものです.何に使っているのかはお
# いとくとして.


-- 
柳川和久 @ 東大阪市 . 大阪府                               February 3, 1999
The more haste, the less speed.


#!/usr/local/bin/ruby

if ARGV[0]
  inf = File.open(ARGV[0])
  ARGV.shift
else
  inf = $stdin
end

if ARGV[0]
  out = File.open(ARGV[0], "w")
  ARGV.shift
else
  out = $stdout
end

out.puts <<SCANNER_HEAD
# Scanner generated by #{$0}

class ScanReturn < Exception
  def initialize(val)
    @val = val
  end

  attr_reader :val
end

class Scanner
  def initialize(__in__ = $stdin)
    case __in__
    when IO
      @__line__ = ""
      @__inf__ = __in__
    when String
      @__line__ = __in__
      @__inf__ = nil
    else
      raise TypeError, "IO or String is expected."
    end

    @__mode__ = :default

    init if self.respond_to? :init
  end

SCANNER_HEAD

while inf.gets
  break if /^<([_a-zA-Z]\w*)>/                # mode declarations
  next if /^\s*$/

  # until first mode declaration, any string is copied literally.
  out.puts "  #{$_.chomp!}"
end

if $1
  out.puts
  out.puts "  def #{$1}"
  out.puts "    case @__line__"
end

mode = []

while inf.gets
  case $_.chomp!
  when /(?:^\s*$)|(?:^#.*)/
    # ignore
  when /^<([_a-zA-Z]\w*)>/                # mode declarations
    mode << $1
    out.puts "    else"
    out.puts "      c = @__line__[0]"
    out.puts "      @__line__ = @__line__[1..-1]"
    out.puts "      return_with_val c"
    out.puts "    end"
    out.puts "  end"
    out.puts
    out.puts "  def #{$1}"
    out.puts "    case @__line__"
  when /^\s+.*/                                # actions
    # action strings are copied literally.
    out.puts "      #{$_}"
  else                                        # patterns
    out.puts "    when /\\A(#{$_})/"
    out.puts "      @__line__ = $'"
    out.puts "      matched = $1"
  end
end

out.puts "    else"
out.puts "      c = @__line__[0]"
out.puts "      @__line__ = @__line__[1..-1]"
out.puts "      return_with_val c"
out.puts "    end"
out.puts "  end"

out.puts <<SCANNER_TAIL

  def scan
    while true
      begin
        @__line__ = @__inf__.gets if @__line__.empty? and not @__inf__.nil?
        return nil if @__line__.nil?
        while not @__line__.empty?
          send @__mode__
        end
      rescue ScanReturn
        return $!.val
      end
    end
  end

  def goto(__mode__)
    raise TypeError, "no such mode." if not self.respond_to? __mode__
    @__mode__ = __mode__
  end

  def return_with_val(__val__, __mode__ = @__mode__)
    raise TypeError, "no such mode." if not self.respond_to? __mode__
    @__mode__ = __mode__
    raise ScanReturn.new(__val__)
  end

  alias GOTO goto
  alias RETURN return_with_val
end

if $0 == __FILE__
  lex = Scanner.new

  while tok = lex.scan
    p tok
  end
end
SCANNER_TAIL

# sample ###################################################################

def init
  @str = ""
  @lineno = 1
end

<default>
[_a-zA-Z]\w*
	RETURN [:ident, matched, @lineno]
\[\]|:|;|\.
	RETURN [matched, matched, @lineno]
\n
	@lineno += 1
\s+
	# silently ignored
"
	@str = "\""
	GOTO :in_string
.
	RETURN [matched, matched, @lineno]

<in_string>
\\[a-zA-Z"]
	@str << "#{matched}"
"
	@str << "\""
	RETURN [:string, @str, @lineno], :default
\n
	@lineno += 1
	@str << "\n"
[^"\\]
	@str << matched

In This Thread