Skip to content

Commit 52736bc

Browse files
committed
Toss old, long-replaced NFA evaluation op now it's eliminated from the stage0.
1 parent 23b8c3e commit 52736bc

File tree

1 file changed

+0
-94
lines changed

1 file changed

+0
-94
lines changed

src/ops/nqp.ops

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -2116,100 +2116,6 @@ inline op nqp_rxcommit(in PMC, in LABEL) :base_core {
21162116
}
21172117
}
21182118

2119-
inline op nqp_nfa_run(out PMC, in PMC, in STR, in INT) :base_core {
2120-
PMC *states = $2;
2121-
STRING *target = $3;
2122-
INTVAL offset = $4;
2123-
INTVAL eos = Parrot_str_length(interp, target);
2124-
PMC *fatepos = Parrot_pmc_new(interp, enum_class_ResizablePMCArray);
2125-
PMC *done = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
2126-
INTVAL gen = 1;
2127-
PMC *curst = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
2128-
PMC *nextst = Parrot_pmc_new(interp, enum_class_ResizableIntegerArray);
2129-
INTVAL i, num_states;
2130-
2131-
/* Zero out the done array; we don't get zeroed memory by default. */
2132-
num_states = VTABLE_elements(interp, states);
2133-
for (i = 0; i < num_states; i++)
2134-
VTABLE_set_integer_keyed_int(interp, done, i, 0);
2135-
2136-
VTABLE_push_integer(interp, nextst, 1);
2137-
while (VTABLE_elements(interp, nextst) && offset <= eos) {
2138-
/* Translation of:
2139-
* my @curst := @nextst;
2140-
* @nextst := [];
2141-
* But avoids an extra allocation per offset. */
2142-
PMC *temp = curst;
2143-
curst = nextst;
2144-
VTABLE_set_integer_native(interp, temp, 0);
2145-
nextst = temp;
2146-
2147-
while (VTABLE_elements(interp, curst)) {
2148-
PMC *edge_info;
2149-
INTVAL edge_info_elems;
2150-
2151-
INTVAL st = VTABLE_pop_integer(interp, curst);
2152-
if (VTABLE_get_integer_keyed_int(interp, done, st) == gen)
2153-
continue;
2154-
VTABLE_set_integer_keyed_int(interp, done, st, gen);
2155-
2156-
edge_info = VTABLE_get_pmc_keyed_int(interp, states, st);
2157-
edge_info_elems = VTABLE_elements(interp, edge_info);
2158-
for (i = 0; i < edge_info_elems; i += 3) {
2159-
INTVAL act = VTABLE_get_integer_keyed_int(interp, edge_info, i);
2160-
INTVAL to = VTABLE_get_integer_keyed_int(interp, edge_info, i + 2);
2161-
2162-
if (act == EDGE_FATE) {
2163-
INTVAL arg = VTABLE_get_integer_keyed_int(interp, edge_info, i + 1);
2164-
VTABLE_set_integer_keyed_int(interp, fatepos, arg, offset);
2165-
}
2166-
else if (act == EDGE_EPSILON && VTABLE_get_integer_keyed_int(interp, done, to) != gen) {
2167-
VTABLE_push_integer(interp, curst, to);
2168-
}
2169-
else if (offset >= eos) {
2170-
/* Can't match, so drop state. */
2171-
}
2172-
else if (act == EDGE_CODEPOINT) {
2173-
UINTVAL arg = VTABLE_get_integer_keyed_int(interp, edge_info, i + 1);
2174-
if (STRING_ord(interp, target, offset) == arg)
2175-
VTABLE_push_integer(interp, nextst, to);
2176-
}
2177-
else if (act == EDGE_CODEPOINT_NEG) {
2178-
UINTVAL arg = VTABLE_get_integer_keyed_int(interp, edge_info, i + 1);
2179-
if (STRING_ord(interp, target, offset) != arg)
2180-
VTABLE_push_integer(interp, nextst, to);
2181-
}
2182-
else if (act == EDGE_CHARCLASS) {
2183-
INTVAL arg = VTABLE_get_integer_keyed_int(interp, edge_info, i + 1);
2184-
if (Parrot_str_is_cclass(interp, arg, target, offset))
2185-
VTABLE_push_integer(interp, nextst, to);
2186-
}
2187-
else if (act == EDGE_CHARCLASS_NEG) {
2188-
INTVAL arg = VTABLE_get_integer_keyed_int(interp, edge_info, i + 1);
2189-
if (!Parrot_str_is_cclass(interp, arg, target, offset))
2190-
VTABLE_push_integer(interp, nextst, to);
2191-
}
2192-
else if (act == EDGE_CHARLIST) {
2193-
STRING *arg = VTABLE_get_string_keyed_int(interp, edge_info, i + 1);
2194-
STRING *chr = STRING_substr(interp, target, offset, 1);
2195-
if (STRING_index(interp, arg, chr, 0) >= 0)
2196-
VTABLE_push_integer(interp, nextst, to);
2197-
}
2198-
else if (act == EDGE_CHARLIST_NEG) {
2199-
STRING *arg = VTABLE_get_string_keyed_int(interp, edge_info, i + 1);
2200-
STRING *chr = STRING_substr(interp, target, offset, 1);
2201-
if (STRING_index(interp, arg, chr, 0) < 0)
2202-
VTABLE_push_integer(interp, nextst, to);
2203-
}
2204-
}
2205-
}
2206-
offset++;
2207-
gen++;
2208-
}
2209-
2210-
$1 = fatepos;
2211-
}
2212-
22132119
inline op nqp_nfa_run_new(out PMC, in PMC, in STR, in INT) :base_core {
22142120
PMC *states = $2;
22152121
STRING *target = $3;

0 commit comments

Comments
 (0)