help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-smalltalk] [poll] regex literals


From: Paolo Bonzini
Subject: Re: [Help-smalltalk] [poll] regex literals
Date: Wed, 13 Feb 2008 11:52:46 +0100
User-agent: Thunderbird 2.0.0.9 (Macintosh/20071031)

Tony Garnock-Jones wrote:
Paolo Bonzini wrote:
I'm thinking of adding regex literals to GNU Smalltalk.

I'd be against this.

 'a.*b' asRegex

to me seems better, and doesn't require and lexer/parser changes.

It's also slower, which is why as of today 'a.*b' works even without sending #asRegex.

However, *always* treating string literals as regexes is going to give problems in the long term. In particular, it would break with another extension that I was thinking about:

    #(1 3 2 6 5 4) select: #odd => #(1 3 5)
    #(1 12 2) select: (1 to: 10) => #(1 12)
    #('foo' 'bar') select: ##/f./ => #('foo')

This would be quite easily implemented (#select: would send a new message to its argument, e.g. #~, instead of #value:). If regexes would be implemented simply as strings, however, there would be a conflict between the Collection example (second) and the regex example (third):

    'foo' select: 'aeiouy' => 'oo'
    #('foo') select: 'f.' => cannot make it return 'foo' as I'd like!

That's why in this case, simply using string literals as regexes wouldn't work. You would need to specify #asRegex to get the desired behavior.

As I said, I'm also thinking "no"/"not yet". It's not paramount: older code would be unaffected, and I could start implementing the above (which is not happening any time soon), and then see if it is a problem. Just, there *might* be one.

Paolo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]