| Crates.io | udled |
| lib.rs | udled |
| version | 0.6.2 |
| created_at | 2025-01-20 21:15:45.509792+00 |
| updated_at | 2025-12-11 21:29:39.167155+00 |
| description | Tokenizer and parser |
| homepage | |
| repository | https://github.com/kildevaeld/udled-rs |
| max_upload_size | |
| id | 1524328 |
| size | 78,039 |
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(())
}