Skip to content

Commit 736f36a

Browse files
committed
calculate literal lengths
We don't install lit length in the fates yet because this apparently blows up earlier stages of nqp build for some reason, so we'll wait till we rebootstrap stage0 for other reasons and see if it works then.
1 parent 7ec03cf commit 736f36a

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/QRegex/NFA.nqp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,24 +367,32 @@ class QRegex::NFA {
367367
# append any subrules
368368
my int $subend := nqp::elems($!states);
369369
my int $i := $substart;
370+
my int $lits := 0;
371+
my int $nlits := 0;
370372
while $i < $subend {
371373
my $substate := $!states[$i];
372374
my int $j := 0;
373375
my int $k := nqp::elems($substate);
374376
while $j < $k {
375377
$substate[$j+2] := $substate[$j+2] + $substart;
376-
$substate[$j+1] := $fate
378+
$substate[$j+1] := $fate # XXX add in $lits +< 32 after rebootstrap
377379
if $substate[$j] == $EDGE_FATE;
378380
self.mergesubrule($i, $substate[$j+2], $fate, $cursor, $substate[$j+1], %seen)
379381
if $substate[$j] == $EDGE_SUBRULE;
382+
if $substate[$j] == $EDGE_CODEPOINT || $substate[$j] == $EDGE_CODEPOINT_I {
383+
$lits := $lits + 1 unless $nlits;
384+
}
385+
else {
386+
$nlits := $nlits + 1;
387+
}
380388
$j := $j + 3;
381389
}
382390
$i := $i + 1;
383391
}
384392
self.addedge($start, $substart+1, $EDGE_EPSILON, 0);
385393
$to > 0
386394
?? self.addedge($substart, $to, $EDGE_EPSILON, 0)
387-
!! self.addedge($substart, 0, $EDGE_FATE, $fate)
395+
!! self.addedge($substart, 0, $EDGE_FATE, $fate) # XXX add in $lits +< 32 after rebootstrap
388396
}
389397
else {
390398
self.addedge($start, 0, $EDGE_FATE, $fate);

0 commit comments

Comments
 (0)