Re: Problem with std.regex: *+? not allowed in atom
On 27.02.2011 13:41, Jacob Carlborg wrote: On 2011-02-26 19:49, Dmitry Olshansky wrote: On 26.02.2011 19:52, Jacob Carlborg wrote: On 2011-02-26 12:29, Dmitry Olshansky wrote: On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. I tried the patch but with no success. I still get the same error. The patch fixes only (?: ) form and not the lookahead and others. Sorry, it was the only one I needed back then. I'll check if I can make a patch for them as well when I have some spare time. That's would be around monday if, of course, nobody else wishes to rush into the depths of std.regex. Ok. So here it is, hot and bobbling. For now no lookbehind. I added it into another Bugzilla requesthttp://d.puremagic.com/issues/show_bug.cgi?id=5673 -- Dmitry Olshansky
Re: Problem with std.regex: *+? not allowed in atom
On 2011-03-01 16:54, Dmitry Olshansky wrote: On 27.02.2011 13:41, Jacob Carlborg wrote: On 2011-02-26 19:49, Dmitry Olshansky wrote: On 26.02.2011 19:52, Jacob Carlborg wrote: On 2011-02-26 12:29, Dmitry Olshansky wrote: On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. I tried the patch but with no success. I still get the same error. The patch fixes only (?: ) form and not the lookahead and others. Sorry, it was the only one I needed back then. I'll check if I can make a patch for them as well when I have some spare time. That's would be around monday if, of course, nobody else wishes to rush into the depths of std.regex. Ok. So here it is, hot and bobbling. For now no lookbehind. I added it into another Bugzilla requesthttp://d.puremagic.com/issues/show_bug.cgi?id=5673 Ok, thanks. -- /Jacob Carlborg
Re: Problem with std.regex: *+? not allowed in atom
On 2011-02-26 19:49, Dmitry Olshansky wrote: On 26.02.2011 19:52, Jacob Carlborg wrote: On 2011-02-26 12:29, Dmitry Olshansky wrote: On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. I tried the patch but with no success. I still get the same error. The patch fixes only (?: ) form and not the lookahead and others. Sorry, it was the only one I needed back then. I'll check if I can make a patch for them as well when I have some spare time. That's would be around monday if, of course, nobody else wishes to rush into the depths of std.regex. Ok. -- /Jacob Carlborg
Re: Problem with std.regex: *+? not allowed in atom
On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. I'm compiling this with DMD 2.052 on Mac OS X. Full stack trace: 5 test0x2356 void std.regex.Regex!(char).Regex.error(immutable(char)[]) + 126 6 test0x7c1d int std.regex.Regex!(char).Regex.parseAtom!(const(immutable(char)[])).parseAtom(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 237 7 test0x772d int std.regex.Regex!(char).Regex.parsePiece!(const(immutable(char)[])).parsePiece(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 117 8 test0x76b3 int std.regex.Regex!(char).Regex.parseRegex!(const(immutable(char)[])).parseRegex(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 431 9 test0x7c88 int std.regex.Regex!(char).Regex.parseAtom!(const(immutable(char)[])).parseAtom(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 344 10 test0x772d int std.regex.Regex!(char).Regex.parsePiece!(const(immutable(char)[])).parsePiece(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 117 11 test0x74ff int std.regex.Regex!(char).Regex.parseRegex!(immutable(char)[]).parseRegex(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 431 12 test0x72f2 void std.regex.Regex!(char).Regex.compile!(immutable(char)[]).compile(immutable(char)[], immutable(char)[]) + 370 13 test0x7176 ref std.regex.Regex!(char).Regex std.regex.Regex!(char).Regex.__ctor!(immutable(char)[]).__ctor(immutable(char)[], immutable(char)[]) + 26 14 test0x21f7 std.regex.Regex!(char).Regex std.regex.regex!(immutable(char)[]).regex(immutable(char)[], immutable(char)[]) + 187 15 test0x2138 _Dmain + 44 16 test0x0001b213 extern (C) int rt.dmain2.main(int, char**).void runMain() + 23 17 test0x0001b19a extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate()) + 38 18 test0x0001b25b extern (C) int rt.dmain2.main(int, char**).void runAll() + 59 19 test0x0001b19a extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate()) + 38 20 test0x0001b12b main + 179 21 test0x2101 start + 53 -- Dmitry Olshansky
Re: Problem with std.regex: *+? not allowed in atom
On 2011-02-26 12:29, Dmitry Olshansky wrote: On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. Ok thanks. I'll try the patch. -- /Jacob Carlborg
Re: Problem with std.regex: *+? not allowed in atom
On 2011-02-26 12:29, Dmitry Olshansky wrote: On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. I tried the patch but with no success. I still get the same error. -- /Jacob Carlborg
Re: Problem with std.regex: *+? not allowed in atom
On 26.02.2011 19:52, Jacob Carlborg wrote: On 2011-02-26 12:29, Dmitry Olshansky wrote: On 26.02.2011 14:10, Jacob Carlborg wrote: I'm trying to use the std.regex module but when I run my application I get an exception. The exception message says: *+? not allowed in atom The code I have is: import std.regex; void main () { regex(`\.(?=(?:[^\]*\[^\]*\)*(?![^\]*\))`, m); } Well the thing is, std.regex is not quite ECMA complaint (as vaguely stated in docs). To the best of my knowledge not a single one variant of the forms (?:...) ... (?=...) is supported . Also see http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my patch there to support (?:...). It's a slightly outdated, but std.regex wasn't in very active development. I tried the patch but with no success. I still get the same error. The patch fixes only (?: ) form and not the lookahead and others. Sorry, it was the only one I needed back then. I'll check if I can make a patch for them as well when I have some spare time. That's would be around monday if, of course, nobody else wishes to rush into the depths of std.regex. -- Dmitry Olshansky