jayce 2.0.0

jayce is a simple tokenizer 🌌
Documentation

jayce

Jayce is a simple tokenizer

Example

use jayce::Tokenizer;

fn main() {
    let source = "let value = 5000$";
    let duos = &[
        ("keywords", r"^(let|const)"),
        ("whitespace", r"^\s+"),
        ("variable", r"^[a-zA-Z_]+"),
        ("price", r"^[0-9]+\$"),
        ("equals", r"^="),
        ("newline", r"^\n"),
    ];
    let mut tokenizer = Tokenizer::new(source, duos);

    while let Some(token) = tokenizer.eat() {
        println!("{:?}", token);
    }
}

Result

Token { kind: Some("keywords"), value: "let", line: 1, column: 4 }
Token { kind: Some("whitespace"), value: " ", line: 1, column: 5 }
Token { kind: Some("variable"), value: "value", line: 1, column: 10 }
Token { kind: Some("whitespace"), value: " ", line: 1, column: 11 }
Token { kind: Some("equals"), value: "=", line: 1, column: 12 }
Token { kind: Some("whitespace"), value: " ", line: 1, column: 13 }
Token { kind: Some("price"), value: "5000$", line: 1, column: 18 }

Info

Reaching the end of source returns None

Unknown characters returns a Token with kind as None and value of the unknown character