pub mod regex_consts;
pub mod types;
use crate::parser::types::SingleLineText;
use crate::tester::Tester;
#[allow(dead_code)]
pub struct ParsingError {
pub message: String,
pub filename: String,
pub line: usize,
}
#[allow(dead_code)]
pub enum Error {
Parsing(ParsingError),
Unknown,
}
pub trait Token {
fn size(&self) -> usize;
}
pub fn collect_single_lines(single_lines: &Vec<SingleLineText>) -> String {
let lines: Vec<&str> = single_lines
.iter()
.map(|sl| sl.get_content().as_str())
.collect();
lines.join("\n")
}
pub trait Parser: Sized + Token {
fn fill_test_info(&self, tester: &mut Tester);
fn match_token(input: &str) -> Result<Self, ()>;
fn match_next(&mut self, stack: &mut Vec<(usize, &str)>, input: &str) -> Result<(), ()>;
}