package core:text/regex/compiler

⌘K
Ctrl+K
or
/

    Overview

    A bytecode compiler for the virtual machine included alongside it.

    Operands larger than u8 are written in system endian order.

    More details can be found in the documentation for the virtual machine.

    Types

    Compiler ¶

    Compiler :: struct {
    	flags:      bit_set[regex_common.Flag; u8],
    	class_data: [dynamic]regex_parser.Rune_Class_Data,
    }

    Error ¶

    Error :: enum int {
    	None, 
    	Program_Too_Big, 
    	Too_Many_Classes, 
    }

    Node ¶

    Node :: regex_parser.Node

    Related Procedures With Parameters

    Node_Rune_Class ¶

    Node_Rune_Class :: regex_parser.Node_Rune_Class

    Fields Through using (2)

    From using data: regex_parser.Rune_Class_Data

    Program ¶

    Program :: [dynamic]regex_vm.Opcode

    Related Procedures With Parameters

    Related Procedures With Returns

    Rune_Class_Data ¶

    Rune_Class_Data :: regex_parser.Rune_Class_Data

    Token ¶

    Token :: regex_tokenizer.Token

    Tokenizer ¶

    Tokenizer :: regex_tokenizer.Tokenizer

    Constants

    JUMP_SIZE ¶

    JUMP_SIZE :: size_of(Jump)

    SPLIT_SIZE ¶

    SPLIT_SIZE :: size_of(Split)

    Variables

    This section is empty.

    Procedures

    append_raw ¶

    append_raw :: proc(code: ^[dynamic]regex_vm.Opcode, data: $T) {…}

    classes_are_exact ¶

    classes_are_exact :: proc(q, w: ^regex_parser.Rune_Class_Data) -> bool {…}

    compile ¶

    @(require_results)
    compile :: proc(
    	tree:  regex_parser.Node, 
    	flags: bit_set[regex_common.Flag; u8], 
    ) -> (code: [dynamic]regex_vm.Opcode, class_data: [dynamic]regex_parser.Rune_Class_Data, err: Error) {…}

    generate_code ¶

    @(require_results)
    generate_code :: proc(
    	c:    ^Compiler, 
    	node: regex_parser.Node, 
    ) -> (code: [dynamic]regex_vm.Opcode) {…}

    get_jump_targets ¶

    get_jump_targets :: proc(code: []regex_vm.Opcode) -> (jump_targets: map[int]int) {…}

    inject_raw ¶

    inject_raw :: proc(code: ^[dynamic]regex_vm.Opcode, start: int, data: $T) {…}

    map_all_classes ¶

    map_all_classes :: proc(
    	tree:       regex_parser.Node, 
    	collection: ^[dynamic]regex_parser.Rune_Class_Data, 
    ) {…}

    trace ¶

    trace :: proc(w: io.Stream, code: []regex_vm.Opcode) {…}

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2026-10 (vendor "odin") Windows_amd64 @ 2026-10-09 00:54:55.393225600 +0000 UTC