iowo/crates/lang/src/parser/grammar/expression/collection.rs

26 lines
545 B
Rust
Raw Normal View History

2024-04-24 20:00:17 +02:00
use enumset::enum_set;
use crate::parser::{
syntax_kind::{SyntaxKind::*, TokenSet},
CompletedMarker, Parser,
};
2024-04-30 09:45:36 +02:00
use self::{attr_set::attr_set, vec::vec_matrix_list};
2024-04-24 20:00:17 +02:00
mod attr_set;
mod vec;
2024-04-30 09:45:36 +02:00
const COLLECTION_START: TokenSet = enum_set!(L_BRACK | L_BRACE);
2024-04-24 20:00:17 +02:00
pub fn collection(p: &mut Parser) -> Option<CompletedMarker> {
if !COLLECTION_START.contains(p.current()) {
return None;
}
Some(match p.current() {
2024-04-30 09:45:36 +02:00
L_BRACK => vec_matrix_list(p),
2024-04-24 20:00:17 +02:00
L_BRACE => attr_set(p),
_ => unreachable!(),
})
}