Module regex/vm

regex/vm

NFA virtual machine (Thompson simulation).

Executes a compiled NFA program against an input string. Uses Thompson's NFA simulation with parallel state tracking for O(n×m) worst-case time complexity.

Types

NfaVm object
NfaVm

Fields

NameTypeDescription
_programNfaProgram
_flagsRegexFlags
_inputString
_bytesArrayList(u8)
_n_slotsusize
_seenArrayList(bool)
_next_seenArrayList(bool)
impl(NfaVm, ...)
new : (NfaVm) fn(program : NfaProgram, flags : RegexFlags, input : String) -> NfaVm

Parameters

NameTypeNotes
programNfaProgram
flagsRegexFlags
inputString

Returns: NfaVm

_decode_codepoint : (NfaVm) fn(self : NfaVm, pos : usize) -> DecodedChar

Parameters

NameTypeNotes
selfNfaVm
posusize

Returns: DecodedChar

_to_lower : (NfaVm) fn(self : NfaVm, cp : u32) -> u32

Parameters

NameTypeNotes
selfNfaVm
cpu32

Returns: u32

_is_word_char : (NfaVm) fn(self : NfaVm, cp : u32) -> bool

Parameters

NameTypeNotes
selfNfaVm
cpu32

Returns: bool

_find_prev_char_start : (NfaVm) fn(self : NfaVm, pos : usize) -> usize

Parameters

NameTypeNotes
selfNfaVm
posusize

Returns: usize

_prev_byte_is_newline : (NfaVm) fn(self : NfaVm, pos : usize) -> bool

Parameters

NameTypeNotes
selfNfaVm
posusize

Returns: bool

_cur_byte_is_newline : (NfaVm) fn(self : NfaVm, pos : usize) -> bool

Parameters

NameTypeNotes
selfNfaVm
posusize

Returns: bool

impl(NfaVm, ...)
_char_matches : (NfaVm) fn(self : NfaVm, expected : u32, actual : u32) -> bool

Parameters

NameTypeNotes
selfNfaVm
expectedu32
actualu32

Returns: bool

_codepoint_in_class : (NfaVm) fn(self : NfaVm, cp : u32, cls : ClassEntry) -> bool

Parameters

NameTypeNotes
selfNfaVm
cpu32
clsClassEntry

Returns: bool

_is_word_boundary : (NfaVm) fn(self : NfaVm, pos : usize) -> bool

Parameters

NameTypeNotes
selfNfaVm
posusize

Returns: bool

impl(NfaVm, ...)
_add_thread : (NfaVm) fn(self : NfaVm, list : *(ArrayList(NfaThread)), thread : NfaThread, byte_pos : usize, seen : *(ArrayList(bool))) -> unit

Parameters

NameTypeNotes
selfNfaVm
list*(ArrayList(NfaThread))
threadNfaThread
byte_posusize
seen*(ArrayList(bool))

Returns: unit

impl(NfaVm, ...)
_run_sub_vm : (NfaVm) fn(self : NfaVm, sub_start_pc : usize, start_byte : usize, required_end : usize) -> bool

Parameters

NameTypeNotes
selfNfaVm
sub_start_pcusize
start_byteusize
required_endusize

Returns: bool

impl(NfaVm, ...)
exec_at : (NfaVm) fn(self : NfaVm, start_byte : usize) -> VmMatch

Parameters

NameTypeNotes
selfNfaVm
start_byteusize

Returns: VmMatch

NfaThread object
NfaThread

Fields

NameTypeDescription
pcusize
slotsArrayList(usize)
impl(NfaThread, ...)
new : (NfaThread) fn(pc : usize, n_slots : usize) -> NfaThread

Parameters

NameTypeNotes
pcusize
n_slotsusize

Returns: NfaThread

fork : (NfaThread) fn(self : NfaThread, new_pc : usize) -> NfaThread

Parameters

NameTypeNotes
selfNfaThread
new_pcusize

Returns: NfaThread

VmMatch struct
VmMatch

Fields

NameTypeDescription
matchedbool
slotsArrayList(usize)
DecodedChar struct
DecodedChar

Fields

NameTypeDescription
codepointu32
byte_lenusize