udled

Crates.ioudled
lib.rsudled
version0.6.2
created_at2025-01-20 21:15:45.509792+00
updated_at2025-12-11 21:29:39.167155+00
descriptionTokenizer and parser
homepage
repositoryhttps://github.com/kildevaeld/udled-rs
max_upload_size
id1524328
size78,039
(kildevaeld)

documentation

README

Udled

Udled is a lexer and parser for the rust programming language.

use udled::{
    prelude::*,
    tokenizers::{Alphabetic, AsciiWhiteSpace, Punct},
    AsChar, AsSlice, Buffer, Input, Item, Reader, Span, Tokenizer,
};

struct Word;

impl<'input, B> Tokenizer<'input, B> for Word
where
    B: Buffer<'input>,
    B::Item: AsChar,
    B::Source: AsSlice<'input>,
{
    type Token = Item<<B::Source as AsSlice<'input>>::Slice>;

    fn to_token<'a>(&self, reader: &mut Reader<'_, 'input, B>) -> udled::Result<Self::Token> {
        reader.parse(Alphabetic.many().slice())
    }
}

fn main() -> udled::Result<()> {
    let mut input = Input::new("Hello,     World!");

    let (greeting, _, _, subject, _) =
        input.parse((Word, Punct, AsciiWhiteSpace.many().optional(), Word, Punct))?;

    assert_eq!(greeting.span, Span::new(0, 5));
    assert_eq!(greeting.value, "Hello");
    assert_eq!(subject.value, "World");

    Ok(())
}


Commit count: 80

cargo fmt