protospec_build/parser/expression/
multiply.rs

1use super::*;
2
3pub fn parse_multiply_expression(t: &mut TokenIter) -> ParseResult<Expression> {
4    let mut expr = parse_cast_expression(t)?;
5    while let Some(SpannedToken { token: op, .. }) =
6        t.eat_any(&[Token::Mul, Token::Div, Token::Mod])
7    {
8        let right = parse_cast_expression(t)?;
9        expr = Expression::Binary(BinaryExpression {
10            span: *expr.span() + *right.span(),
11            op: match op {
12                Token::Mul => BinaryOp::Mul,
13                Token::Div => BinaryOp::Div,
14                Token::Mod => BinaryOp::Mod,
15                _ => unimplemented!(),
16            },
17            left: Box::new(expr),
18            right: Box::new(right),
19        })
20    }
21    Ok(expr)
22}