use super::{
Expression,
Parser,
PrefixParselet,
Token,
TokenClass,
Tokenstream,
};
pub struct AssignmentParselet {}
impl PrefixParselet for AssignmentParselet {
fn parse(&self, tokenstream: &mut Tokenstream, parser: &Parser, token: Token, nesting: usize) -> Expression {
use Expression::*;
let left = &tokenstream.get(TokenClass::Identifier).value;
tokenstream.get(TokenClass::Assignment);
let right = parser.parse_expr(tokenstream, token.precedence(), nesting + 1);
Assignment {
left: left.to_owned(),
right: Box::new(right),
}
}
}