regexp to matchspec

Ulf Wiger (AL/EAB) <>
Mon Jan 23 15:24:06 CET 2006


Yeah, well, I didn't want to open _that_
can of worms. (:

Just being able to use the relatively limited
expressiveness of regexp.erl is a huge step
forward compared to match specs, I think
(when matching on strings, of course).

Also, Robert Virding's regexp library has 
a pretty nice internal form that's quite easy
to grasp, and that's what I've based the conversion
on. 

Btw, I corrected the bug in my program to properly
bail out when it gets too complex:

1> f(Re), catch (Re =
re2ms:re(regexp:sh_to_awk("*/Otp/*/lib/appmon-*/*.erl"),32)).
[{'$1',[{'orelse',{'andalso',{'andalso',
...

2> f(Re), catch (Re =
re2ms:re(regexp:sh_to_awk("*/Otp/*/lib/appmon-*/*.erl"),64)).
{error,{too_complex,[{re2ms,incr_total,0},
                     {re2ms,next,1},

I set the default limit to 100,000 tail ops past
the last variable (in total, all branches counted).
One can increase it carefully (requires a recompile)
and measure the memory consumption and conversion 
time to suit individual tastes.

I also made pclosure() and kclosure both insert
'false' if they hit the lookahead limit. I don't
know if 'true' would be more appropriate (or if it
matters at all), but it seems sensible that they 
both act the same way...

No new code distributed, unless requested.

/Uffe

> -----Original Message-----
> From:  
> [mailto:] On Behalf Of Vlad 
> Dumitrescu XX (LN/EAB)
> Sent: den 23 januari 2006 14:59
> To: Erlang Questions
> Subject: RE: regexp to matchspec
> 
> Hi,
> 
> I don't have any comments on your idea or your code, Ulf, but 
> it might be of interest to check the way Perl 6 is revisiting 
> regexps http://dev.perl.org/perl6/doc/design/apo/A05.html. 
> 
> Not entirely relevant to Erlang regexps and way too detailed 
> for a non-Perl programmer, but might stir up an idea or two 
> :-) The one thing that stuck for me is that they try to make 
> regexp language more like a grammar, which I think is a Good Thing.
> 
> Regards,
> Vlad
> 
> 



More information about the erlang-questions mailing list