macro_rules! char_pat {
(IDENT) => {
'a'..='z' | 'A'..='Z' | '_'
};
}
macro_rules! expect_token {
($pat:pat in ITER $iter:expr) => {
#[allow(irrefutable_let_patterns)]
let $pat = $iter.next().unwrap() else {
panic!("Unexpected token {:?}", $iter.next().unwrap())
};
};
}
macro_rules! expect_token_ret {
($pat:pat in ITER $iter:expr) => {
#[allow(irrefutable_let_patterns)]
let $pat = (if let Some(_) = $iter.peek() {
$iter.next().unwrap()
} else {
return Err(ParseError::UnexpectedToken(Token::EOF));
}) else {
return Err(ParseError::UnexpectedToken($iter.next().unwrap()));
};
};
}
pub(super) use {char_pat, expect_token, expect_token_ret};