use crate::parser::{syntax_kind::SyntaxKind::*, CompletedMarker, Parser}; use self::{collection::collection, instruction::instr, lit::literal}; mod collection; mod instruction; mod lit; pub fn expression(p: &mut Parser) -> Option { let expr = p.start("expr"); if atom(p).or_else(|| instr(p)).is_none() { expr.abandon(p); return None; } Some(expr.complete(p, EXPR)) } pub fn atom(p: &mut Parser) -> Option { literal(p).or_else(|| collection(p)) }