Simple Regular Expression Interpreter in Mojo

What is This

Inspired by Russ Cox's series of articles on regular expressions.

NFA Diagrams for Basic Blocks of Regular Expressions

$a$ (Any Literal Character)

stateDiagram
    direction LR

    start: ...
    end: ...

    start --> end: a
Loading

$e_ie_j$ (Expression Concatenacion)

stateDiagram
    direction LR

    start: ...
    ei: e<sub><i>i</i></sub>
    ej: e<sub><i>j</i></sub>
    end: ...

    start --> ei
    ei --> ej
    ej --> end
Loading

$e_i|e_j$ (Expression Alteration)

stateDiagram
    direction LR

    start: ...
    ei: e<sub><i>i</i></sub>
    ej: e<sub><i>j</i></sub>
    end1: ...
    end2: ...

    start --> ei
    start --> ej
    ei --> end1
    ej --> end2
Loading

$e?$ (Repetition Zero or One Time)

stateDiagram
    direction LR

    start: ...
    ei: e<sub><i>i</i></sub>
    end1: ...
    end2: ...

    start --> ei
    ei --> end1
    start --> end2
Loading

$e*$ (Repetition Zero or More Times)

stateDiagram
    direction LR

    start: ...
    ei: e<sub><i>i</i></sub>
    end: ...

    start --> ei
    ei --> start
    start --> end
Loading

$e+$ (Repetition One or More Times)

stateDiagram
    direction LR

    start: ...
    ei: e<sub><i>i</i></sub>
    end: ...

    start --> ei
    ei --> end
    end --> ei
Loading