Formal Review of std.regex (FReD)

Rainer Schuetze r.sagitario at gmx.de
Sat Oct 22 09:56:52 PDT 2011


I haven't followed the discussion closely, and I cannot really comment 
on the core regex functionality, but I did actually use FReD as a 
replacement of a buggy std.regex once.

In that case I wanted to have a lazily created static regex, but I did 
not find an official way to test whether a Regex has been initialized:

	static Regex!char re;
	if(!isInitializedRE(re))
		re = regex(r"^(.*)\(([0-9]+)\):(.*)$");

So I implemented isInitializedRE() as "re.ir !is null" for std.regex and 
"re.captures() > 0" for fred, but that fails for being a "drop-in 
replacement".

I think, both versions use implementation specifics, maybe there should 
be a documented way to test for being initialized.

I also noticed, that "auto match(R, RegEx)(R input, RegEx re);" appears 
twice in the documentation, same for "bmatch". I guess they should not 
appear together with the string versions.

Rainer

On 22.10.2011 18:21, Jesse Phillips wrote:
> Please note that the review will be ending this weekend in just 32 hours.
> At which point voting will begin, please do not wait for voting to
> criticize the library.
>
> Updating Documentation: http://blackwhale.github.com/
>
> On Sat, 08 Oct 2011 19:56:32 +0000, Jesse Phillips wrote:
>
>> Hello everyone,
>>
>> I have taken the role of review manager of the std.regex replacement by
>> Dmitry Olshansky. The review period begins now 2011-10-8 and will end on
>> 2011-10-23 at midnight UTC. A voting thread to include into Phobos will
>> be held after review assuming such is appropriate. The Voting period is
>> one week.
>>
>> Please note that you can try FRed as part of Phobos (Code) or by itself
>> (Package of FReD) which includes docs.
>>
>> Doc:
>>
>> http://nascent.freeshell.org/fred/doc/
>>
>> Code:
>>
>> https://github.com/blackwhale/phobos MASTER
>>
>> Package of FReD:
>>
>> https://github.com/downloads/blackwhale/FReD/FReD.zip
>>
>> Remember this will be replacing the current std.regex and is intended to
>> be a drop in replacement. This project is also part of GSoC.
>>
>> Dmitry, I ask that you apply this patch to posix.mak (adding to internal
>> modules).
>>
>> --- a/posix.mak +++ b/posix.mak @@ -184,7 +184,8 @@ std/c/, fenv locale
>> math process stdarg stddef stdio stdlib
>>   time wcharh)
>>   EXTRA_MODULES += $(EXTRA_DOCUMENTABLES) $(addprefix
>>   \
>>          std/internal/math/, biguintcore biguintnoasm biguintx86 \
>> -       gammafunction errorfunction) std/internal/processinit +
>> gammafunction errorfunction) std/internal/processinit \
>> +       std/internal/uni std/internal/uni_tab
>>
>>   # Aggregate all D modules relevant to this build D_MODULES = crc32
>>   $(STD_MODULES) $(EXTRA_MODULES) $(STD_NET_MODULES)
>


More information about the Digitalmars-d mailing list