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
use super::{super::Token, and_parser::parse_and};
use crate::{Pattern, Result};

pub(crate) fn parse_not(lexer: &mut logos::Lexer<Token>) -> Result<Pattern> {
    let mut lookahead = lexer.clone();
    match lookahead.next() {
        Some(Ok(Token::Not)) => {
            lexer.next();
            let pat = parse_not(lexer)?;
            Ok(Pattern::not_matching(pat))
        }
        _ => parse_and(lexer),
    }
}