backyard_lexer/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pub mod token;
mod internal;
mod lexer;
pub mod error;

use error::LexResult;
use internal::inline::InlineToken;
use lexer::{ ControlSnapshot, Lexer };
use token::Token;

pub fn lex(input: &str) -> LexResult {
  let mut lexer = Lexer::new(input);
  let mut tokens: Vec<Token> = Vec::new();
  let inline = InlineToken::lex(&mut lexer, &(ControlSnapshot { line: 1, column: 0, offset: 0 }))?;
  tokens.extend(inline);
  tokens.extend(lexer.start()?);
  Ok(tokens)
}

pub fn lex_eval(input: &str) -> LexResult {
  Lexer::new(input).start()
}