|
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
[Prev in Thread] | Current Thread | [Next in Thread] |