1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
use super::tokenizer::{tokenize, BenToken, BenTokenIndex}; use super::items::BenItem; pub struct BenParser { token_buf: Vec<BenToken>, indices: Vec<BenTokenIndex> } impl BenParser { pub fn new() -> BenParser { BenParser { token_buf: Vec::new(), indices: Vec::new() } } pub fn parse<'a>(&'a mut self, bytes: &'a [u8]) -> BenItem<'a> { self.token_buf.clear(); self.indices.clear(); if tokenize(bytes, &mut self.token_buf, &mut self.indices) { BenItem::new(&self.token_buf, bytes, 0) } else { BenItem::Error } } }