jayce

Jayce is a blazing fast tokenizer

Example

```rust use jayce::Jayce;

fn main () { let source = "Excalibur = 5000$"; let duos = &[ ("newline", r"^\n"), ("whitespace", r"^\s+"), ("name", r"^[a-zA-Z_]+"), ("price", r"^[0-9]+\$"), ("equals", r"^="), ]; let mut jayce = Jayce::new(source, duos);

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

} ```

Result

rust,ignore Token { kind: "name", value: "Excalibur", line: 1, column: 10 } Token { kind: "whitespace", value: " ", line: 1, column: 11 } Token { kind: "equals", value: "=", line: 1, column: 12 } Token { kind: "whitespace", value: " ", line: 1, column: 13 } Token { kind: "price", value: "5000$", line: 1, column: 18 }

Info

Reaching the end of source returns None

Unknown character returns a Token of kind unknown with value of the unknown character

rust,ignore pub struct Jayce<'a> { pub source: &'a str, // source to tokenize pub cursor: usize, // current position in the source pub line: u32, // current line pub column: u32, // current column pub eat_count: usize, // total number of tokens eaten }