forked from katzen-cafe/iowo
28 lines
587 B
Rust
28 lines
587 B
Rust
|
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<CompletedMarker> {
|
||
|
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!(),
|
||
|
})
|
||
|
}
|