Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
February 26, 2011 Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
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"); } I'm compiling this with DMD 2.052 on Mac OS X. Full stack trace: ---------------- 5 test 0x00002356 void std.regex.Regex!(char).Regex.error(immutable(char)[]) + 126 6 test 0x00007c1d int std.regex.Regex!(char).Regex.parseAtom!(const(immutable(char)[])).parseAtom(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 237 7 test 0x0000772d int std.regex.Regex!(char).Regex.parsePiece!(const(immutable(char)[])).parsePiece(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 117 8 test 0x000076b3 int std.regex.Regex!(char).Regex.parseRegex!(const(immutable(char)[])).parseRegex(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 431 9 test 0x00007c88 int std.regex.Regex!(char).Regex.parseAtom!(const(immutable(char)[])).parseAtom(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 344 10 test 0x0000772d int std.regex.Regex!(char).Regex.parsePiece!(const(immutable(char)[])).parsePiece(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 117 11 test 0x000074ff int std.regex.Regex!(char).Regex.parseRegex!(immutable(char)[]).parseRegex(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 431 12 test 0x000072f2 void std.regex.Regex!(char).Regex.compile!(immutable(char)[]).compile(immutable(char)[], immutable(char)[]) + 370 13 test 0x00007176 ref std.regex.Regex!(char).Regex std.regex.Regex!(char).Regex.__ctor!(immutable(char)[]).__ctor(immutable(char)[], immutable(char)[]) + 26 14 test 0x000021f7 std.regex.Regex!(char).Regex std.regex.regex!(immutable(char)[]).regex(immutable(char)[], immutable(char)[]) + 187 15 test 0x00002138 _Dmain + 44 16 test 0x0001b213 extern (C) int rt.dmain2.main(int, char**).void runMain() + 23 17 test 0x0001b19a extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate()) + 38 18 test 0x0001b25b extern (C) int rt.dmain2.main(int, char**).void runAll() + 59 19 test 0x0001b19a extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate()) + 38 20 test 0x0001b12b main + 179 21 test 0x00002101 start + 53 -- /Jacob Carlborg |
February 26, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | 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 test 0x00002356 void std.regex.Regex!(char).Regex.error(immutable(char)[]) + 126 > 6 test 0x00007c1d int std.regex.Regex!(char).Regex.parseAtom!(const(immutable(char)[])).parseAtom(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 237 > 7 test 0x0000772d int std.regex.Regex!(char).Regex.parsePiece!(const(immutable(char)[])).parsePiece(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 117 > 8 test 0x000076b3 int std.regex.Regex!(char).Regex.parseRegex!(const(immutable(char)[])).parseRegex(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 431 > 9 test 0x00007c88 int std.regex.Regex!(char).Regex.parseAtom!(const(immutable(char)[])).parseAtom(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 344 > 10 test 0x0000772d int std.regex.Regex!(char).Regex.parsePiece!(const(immutable(char)[])).parsePiece(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 117 > 11 test 0x000074ff int std.regex.Regex!(char).Regex.parseRegex!(immutable(char)[]).parseRegex(const(immutable(char)[]), ref uint, std.outbuffer.OutBuffer) + 431 > 12 test 0x000072f2 void std.regex.Regex!(char).Regex.compile!(immutable(char)[]).compile(immutable(char)[], immutable(char)[]) + 370 > 13 test 0x00007176 ref std.regex.Regex!(char).Regex std.regex.Regex!(char).Regex.__ctor!(immutable(char)[]).__ctor(immutable(char)[], immutable(char)[]) + 26 > 14 test 0x000021f7 std.regex.Regex!(char).Regex std.regex.regex!(immutable(char)[]).regex(immutable(char)[], immutable(char)[]) + 187 > 15 test 0x00002138 _Dmain + 44 > 16 test 0x0001b213 extern (C) int rt.dmain2.main(int, char**).void runMain() + 23 > 17 test 0x0001b19a extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate()) + 38 > 18 test 0x0001b25b extern (C) int rt.dmain2.main(int, char**).void runAll() + 59 > 19 test 0x0001b19a extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate()) + 38 > 20 test 0x0001b12b main + 179 > 21 test 0x00002101 start + 53 > -- Dmitry Olshansky |
February 26, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | 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 |
February 26, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | 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 |
February 26, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | 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 |
February 27, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | 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 |
March 01, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | 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 |
March 01, 2011 Re: Problem with std.regex: *+? not allowed in atom | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dmitry Olshansky | 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 |
Copyright © 1999-2021 by the D Language Foundation