use crate::parselet_utils::*;
use crate::error::*;
pub struct ParenParselet;
impl PrefixParselet for ParenParselet {
fn parse(&self, parser: &Parser, tokenizer: &mut Tokenizer, _token: Token) -> Expression {
let next = match tokenizer.peek() {
Some(t) => t,
None => {
throw(UnexpectedEof);
return Expression::Nil;
},
};
let expr = parser.parse(tokenizer, next.get_class().into());
let next = match tokenizer.peek() {
Some(t) => t,
None => {
throw(UnexpectedEof);
return Expression::Nil;
},
};
if next.get_class() == TokenClass::CloseParen {
tokenizer.next();
expr
} else {
throw(ExpectedCloseParen);
return Expression::Nil;
}
}
}