Skip to main content

mist_parser/parser/
mod.rs

1pub mod common;
2pub mod items;
3
4use crate::Rule;
5
6pub fn listen_rule(pairs: &mut pest::iterators::Pairs<'_, Rule>, rule: Rule) -> bool {
7    let consumed = pairs
8        .peek()
9        .map(|p| p.as_rule() == rule)
10        .unwrap_or_default();
11
12    if consumed {
13        pairs.next();
14    }
15
16    consumed
17}
18
19pub fn consume_rule<'a>(
20    pairs: &mut pest::iterators::Pairs<'a, Rule>,
21    rule: Rule,
22) -> Option<pest::iterators::Pair<'a, Rule>> {
23    let consumed = pairs
24        .peek()
25        .map(|p| p.as_rule() == rule)
26        .unwrap_or_default();
27
28    if consumed { pairs.next() } else { None }
29}