separated_list/
separated_list.rs1use noa_parser::bytes::primitives::number::Number;
2use noa_parser::bytes::token::Token;
3use noa_parser::errors::ParseResult;
4use noa_parser::recognizer::recognize;
5use noa_parser::scanner::Scanner;
6use noa_parser::separated_list::SeparatedList;
7use noa_parser::visitor::Visitor;
8
9#[derive(Debug)]
10struct Separator;
11
12impl<'a> Visitor<'a, u8> for Separator {
13 fn accept(scanner: &mut noa_parser::scanner::Scanner<u8>) -> ParseResult<Self> {
14 recognize(Token::Tilde, scanner)?;
15 recognize(Token::Tilde, scanner)?;
16 recognize(Token::Tilde, scanner)?;
17 Ok(Separator)
18 }
19}
20
21fn main() {
22 let data = b"1~~~2~~~3~~~4";
23 let mut scanner = Scanner::new(data);
24 let result =
25 SeparatedList::<u8, Number<usize>, Separator>::accept(&mut scanner).map(|x| x.data);
26 println!("{:?}", result); }