--- a/crates/jsonnet-parser/src/expr.rs +++ b/crates/jsonnet-parser/src/expr.rs @@ -50,8 +50,8 @@ pub enum BinaryOpType { Mul, Div, - Mod, - + // Mod is desugared to stdlib + // Mod, Add, Sub, --- a/crates/jsonnet-parser/src/lib.rs +++ b/crates/jsonnet-parser/src/lib.rs @@ -246,7 +246,12 @@ -- a:(@) _ "*" _ b:@ {loc_expr_todo!(Expr::BinaryOp(a, BinaryOpType::Mul, b))} a:(@) _ "/" _ b:@ {loc_expr_todo!(Expr::BinaryOp(a, BinaryOpType::Div, b))} - a:(@) _ "%" _ b:@ {loc_expr_todo!(Expr::BinaryOp(a, BinaryOpType::Mod, b))} + a:(@) _ "%" _ b:@ {loc_expr_todo!(Expr::Apply( + el!(Expr::Index( + el!(Expr::Var("std".to_owned())), + el!(Expr::Str("mod".to_owned())) + )), ArgsDesc(vec![Arg(None, a), Arg(None, b)]) + ))} -- "-" _ b:@ {loc_expr_todo!(Expr::UnaryOp(UnaryOpType::Minus, b))} "!" _ b:@ {loc_expr_todo!(Expr::UnaryOp(UnaryOpType::Not, b))}