On Dec 6, 2013, at 21:26, Geoffrey Odhner wrote:
> On 6 Dec 2013, at 2:59, Ryan Schmidt wrote:
>
>> I’d also ask if you really need to use gcc. Could you use clang instead?
>
> I also tried your suggestion of using clang. I installed the MacPorts port
> of clang-3.4, which compiled my program fine, but when I ran it, it gave
> exceptions on regexes that it shouldn't! I have a regex std::regex
> phone_("\\PHONE ?"), and I learned that their regular expression engine is
> very much more particular about adhering to the ECMA standard in its parsing
> of regular expressions, but because the standard doesn't explicitly require
> it, they don't support matching of backslashes, even when they are specified
> using hex escape sequences. This is really a problem! How can they not
> support matching against a specific character? Well, that's why I need to go
> back to GCC for now. I always seem to run into the issues with compilers.
> Thanks again for your help.
I see!
I actually meant the clang that comes with Xcode, but if the bleeding-edge
clang-3.4 didn’t work for this, then Xcode’s version probably won’t either.
More Googling informs me that this std::regex thing is brand new in gcc. They
had an incomplete version in gcc48, based on earlier c++0x standards, and have
now completed the full c++11 version in what will become gcc49. More Googling
says clang’s regex implementation should be up to the c++11 standard, but if as
you say the behavior you’re looking for is not defined by the standard, then
it’s understandable if it doesn’t support it. Seems like a strange omission
from the standard though. I use regular expressions constantly; I can’t imagine
being told there is no way to match one specific character.
The reason I suggest using clang if possible is that with 10.9, OS X has
switched its C++ library from libstdc++ to libc++ and you cannot mix C++ code
compiled with one with C++ code compiled with the other. So if you ever want to
link with C++ libraries in MacPorts, you’ll have to be compiled with libc++ on
Mavericks, and that means using clang or llvm-gcc but not FSF GCC.
I searched the clang bug database for “regex” and didn’t see any titles that
looked relevant to me. Maybe you could take a look and file a bug report? If
nobody reports this problem to the clang developers it probably won’t get fixed.
http://llvm.org/bugs/
_______________________________________________
macports-users mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-users