use enumset::enum_set; use crate::parser::{ syntax_kind::{SyntaxKind::*, TokenSet}, CompletedMarker, Parser, }; use self::{attr_set::attr_set, matrix::matrix, vec::vec}; mod attr_set; mod matrix; mod vec; const COLLECTION_START: TokenSet = enum_set!(MAT_KW | L_BRACK | L_BRACE); pub fn collection(p: &mut Parser) -> Option { if !COLLECTION_START.contains(p.current()) { return None; } Some(match p.current() { MAT_KW => matrix(p), L_BRACK => vec(p), L_BRACE => attr_set(p), _ => unreachable!(), }) }