bc-envelope-pattern 0.14.0

Pattern matcher for Gordian Envelope
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use crate::{
    Error, Pattern, Result,
    parse::{Token, utils},
};

pub(crate) fn parse_array(lexer: &mut logos::Lexer<Token>) -> Result<Pattern> {
    // We're at the '[' token, now need to parse until ']'
    let src = lexer.remainder();
    let (pattern, consumed) = utils::parse_array_inner(src)?;
    lexer.bump(consumed);
    match lexer.next() {
        Some(Ok(Token::BracketClose)) => Ok(pattern),
        Some(Ok(t)) => Err(Error::UnexpectedToken(Box::new(t), lexer.span())),
        Some(Err(e)) => Err(e),
        None => Err(Error::ExpectedCloseBracket(lexer.span())),
    }
}