///|
pub trait Scanner {
fn tokenize(Self, SourceText) -> Result[TokenStream, ScanErrorList]
}
///|
pub struct DefaultScanner {
dialect : @dialect.Dialect
}
///|
/// A scanner for `dialect` (reserved words and operator symbols).
pub fn DefaultScanner::new(
dialect? : @dialect.Dialect = @dialect.Dialect::elm_0_19_1(),
) -> DefaultScanner {
{ dialect, }
}
///|
pub fn DefaultScanner::tokenize(
self : DefaultScanner,
_source : SourceText,
) -> Result[TokenStream, ScanErrorList] {
match lex_raw(_source, dialect=self.dialect) {
Ok(raw_tokens) => Ok(normalize_tokens(raw_tokens))
Err(errs) => Err(errs)
}
}
///|
pub impl Scanner for DefaultScanner with fn tokenize(self, source) {
DefaultScanner::tokenize(self, source)
}