digitalmars.D - ctRegex! vs regex error
- Milvakili (84/84) Aug 07 2013 Hi,
- Anthony Goins (3/16) Aug 08 2013 Sorry I really can't help you.
- Tyler Jameson Little (21/33) Aug 08 2013 Go ahead and add it to the issue tracker:
- Dmitry Olshansky (14/23) Aug 08 2013 Well, it should have said "sorry, unsupported yet" or something to that
Hi,
I can compile
void main(){
auto myRegx = regex(`(?!test)`);
}
however can not compile this one
void main(){
auto myRegx = ctRegex!(`(?!test)`);
}
code sample:http://dpaste.dzfl.pl/d38926f4
and get the following error:
/opt/compilers/dmd2/include/std/regex.d(4355): Error:
"NeglookaheadStart"[0LU..17LU]
/opt/compilers/dmd2/include/std/regex.d(4313): called from
here: this.ctGenGroup(ir, result.addr)
/opt/compilers/dmd2/include/std/regex.d(4751): called from
here: this.ctGenBlock(re.ir, 0)
/opt/compilers/dmd2/include/std/regex.d(4800): called from
here: context.ctGenRegEx(re)
/opt/compilers/dmd2/include/std/regex.d(6487): called from
here: ctGenRegExCode(Regex(null, [Bytecode(2566914052u),
Bytecode(1u), Bytecode(1u), Bytecode(2147483764u),
Bytecode(2147483749u), Bytecode(2147483763u),
Bytecode(2147483764u), Bytecode(2583691268u),
Bytecode(2550136832u)], null, 1u, 0u, 0u, 7u, 0u, null, null,
ShiftOr([4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u, 4294967295u, 4294967295u, 4294967295u,
4294967295u, 4294967295u], 4294967295u, 0u)))
/opt/compilers/dmd2/include/std/regex.d(6511): Error: template
instance std.regex.ctRegexImpl!("(?!test)", []) error
instantiating
/d53/f251.d(10): instantiated from here:
ctRegex!("(?!test)")
/d53/f251.d(10): Error: template instance
std.regex.ctRegex!("(?!test)") error instantiating
Aug 07 2013
On Wednesday, 7 August 2013 at 22:36:39 UTC, Milvakili wrote:
Hi,
I can compile
void main(){
auto myRegx = regex(`(?!test)`);
}
however can not compile this one
void main(){
auto myRegx = ctRegex!(`(?!test)`);
}
code sample:http://dpaste.dzfl.pl/d38926f4
and get the following error:
...
std.regex.ctRegex!("(?!test)") error instantiating
Sorry I really can't help you.
Except to let you know your code sample link is broken.
Aug 08 2013
On Wednesday, 7 August 2013 at 22:36:39 UTC, Milvakili wrote:
Hi,
I can compile
void main(){
auto myRegx = regex(`(?!test)`);
}
however can not compile this one
void main(){
auto myRegx = ctRegex!(`(?!test)`);
}
code sample:http://dpaste.dzfl.pl/d38926f4
and get the following error:
snip...
Go ahead and add it to the issue tracker:
http://d.puremagic.com/issues/
FWIW, I get the same error, and I get a similar one in LDC:
/usr/include/d/std-ldc/std/regex.d(4350): Error: ['N', 'e', 'g',
'l', 'o', 'o', 'k', 'a', 'h', 'e', 'a', 'd', 'S', 't', 'a', 'r',
't'][0LU..17LU]
/usr/include/d/std-ldc/std/regex.d(4308): called from
here: this.ctGenGroup(ir, result.addr)
/usr/include/d/std-ldc/std/regex.d(4746): called from
here: this.ctGenBlock(re.ir, 0)
/usr/include/d/std-ldc/std/regex.d(4795): called from
here: context.ctGenRegEx(re)
/usr/include/d/std-ldc/std/regex.d(6482): called from
here: ctGenRegExCode(regex("(?!test)", []))
/usr/include/d/std-ldc/std/regex.d(6506): Error: template
instance std.regex.ctRegexImpl!("(?!test)", []) error
instantiating
instantiatied in test.d(10): ctRegex!("(?!test)")
test.d(10): Error: template instance
std.regex.ctRegex!("(?!test)") error instantiating
Aug 08 2013
08-Aug-2013 02:36, Milvakili пишет:
Hi,
I can compile
void main(){
auto myRegx = regex(`(?!test)`);
}
however can not compile this one
void main(){
auto myRegx = ctRegex!(`(?!test)`);
}
Well, it should have said "sorry, unsupported yet" or something to that
extent. It's a bug regardless as it shouldn't spit this much of garbage
on the screen.
ctRegex is not yet up to the full feature set of the run-time one. The
prime things missing are exactly zero-width assertions
(look-ahead/look-behind). And certain things will simply make compiler
explode...
Reasons for not supporting it yet are various but the primary one is
that I can't even fully test the current subset yet (!) due to the sorry
state of CTFE (still!). Things definitely greatly improved since then
but don't get your hopes high it's not something to fix overnight.
--
Dmitry Olshansky
Aug 08 2013









"Anthony Goins" <neontotem gmail.com> 