[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16489] Verify correct lexing of delimited strings

From: Robert Feldt <feldt@...>
Date: 2001-06-15 08:27:03 UTC
List: ruby-talk #16489
Hi all,

Could someone knowledgeable in Ruby's parse.y please verify the correct
lexing/scanning/tokenizing of general delimited strings exhibited by the
code below.

Thanks,

Robert

class Tokenizer
  attr_reader :string, :cursor, :string_length

  def initialize(str, cursor = 1)
    @string, @cursor, @string_length = str, cursor, str.length
  end

  def delimited_string
    s, pos, skip_tokens = string, cursor - 1, 2
    token_name = case s[pos += 1]
		 when ?r then :Regexp
		 when ?q then :QString
		 when ?Q then :IString
		 when ?(, ?{, ?[, ?<
		   pos -= 1
                   skip_tokens = 1
                   :IString
		 when ?w then :ArrayOfStrings
		 when ?x then :ShellCommand
		 else return nil
		 end
    delimiter = s[pos += 1]
    if index = [?(, ?[, ?{, ?<].index(delimiter)
      balancing_delimiter = [?), ?], ?}, ?>][index]
      count = 1
      while count > 0
	c = s[pos += 1]
	return nil if pos > string_length
	if c == balancing_delimiter
	  count -= 1
	elsif c == delimiter
	  count += 1
	end
      end
    else
      c = s[pos += 1] while c != delimiter and pos < string_length
    end
    return token_name, cursor + skip_tokens, pos - 1, pos + 1
  end

  def match
    res = delimited_string
    if res
      s = "#{res[0]}: #{string[res[1]..res[2]]}"
      puts s + (" " * (45-s.length)) + "(rest: #{string[res[3]..-1].inspect})"
    else
      puts "NO MATCH!"
    end
  end
end

Tokenizer.new("%q/simple strings are ok/; #the rest...").match
Tokenizer.new("%q(nesting (really) works); #the rest...").match
Tokenizer.new("%q no_blanks_in_this_one ; #the rest...").match

Tokenizer.new("%Q!\"I said 'nuts', \" I said!; #the rest...").match
a = 123
Tokenizer.new("%Q{Try #{a+1}, not #{a-1}}; #the rest...").match
Tokenizer.new("%Q<Try #{a+1}, not #{a-1}>; #the rest...").match
Tokenizer.new("%<Try #{a+1}, not #{a-1}>; #the rest...").match
Tokenizer.new("%(and the (nesting) works again!); #the rest...").match
Tokenizer.new("%(\123mile you little hobbit); #the rest...").match

Tokenizer.new("%r<[ab]+(c|d)*e{1,3}>; #the rest...").match
Tokenizer.new("%w{a|| b<> c[] d{} e()}; #the rest...").match
Tokenizer.new("%x;ls -al *.dll;; #the rest...").match
Tokenizer.new("%%%").match
Tokenizer.new("%(this one is not terminated").match
Tokenizer.new("%!neither is this one").match


In This Thread

Prev Next