1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
pub use parce_macros::lex;

pub struct ParseError;
pub struct LexError;

// lexeme enum implements FromStr
// parser rules implement FromTokens
// auto-impl FromStr for FromTokens

pub trait Lex {
    fn lex(s: &str, start: usize) -> Result<Lexeme<Self>, LexError> where Self: Sized;
}

pub struct Lexeme<T> {
    data: T,
    start: usize,
    length: usize
}