compile-time regex redux

Bill Baxter dnewsgroup at billbaxter.com
Wed Feb 7 03:02:27 PST 2007


Walter Bright wrote:
> String mixins, in order to be useful, need an ability to manipulate 
> strings at compile time. Currently, the core operations on strings that 
> can be done are:
> 
> 1) indexed access
> 2) slicing
> 3) comparison
> 4) getting the length
> 5) concatenation
> 
> Any other functionality can be built up from these using template 
> metaprogramming.
> 
> The problem is that parsing strings using templates generates a large 
> number of template instantiations, is (relatively) very slow, and 
> consumes a lot of memory (at compile time, not runtime). For example, 
> ParseInteger would need 4 template instantiations to parse 5678, and 
> each template instantiation would also include the rest of the input as 
> part of the template instantiation's mangled name.
> 
> At some point, this will prove a barrier to large scale use of this 
> feature.
> 
> Andrei suggested using compile time regular expressions to shoulder much 
> of the burden, reducing parsing of any particular token to one 
> instantiation.

That would help I suppose, but at the same time regexps themselves have 
a tendancy to end up being 'write-only' code.  The heavy use of them in 
perl is I think a large part of what gives it a rep as a write-only 
language.   Heh heh.  I just found this regexp for matching RFC 822 
email addresses:
     http://www.regular-expressions.info/email.html
(the one at the bottom of the page)


--bb



More information about the Digitalmars-d mailing list