open AST

let string_of_exp e =
  let rec aux = function
    | Id x ->
       x
    | LInt x ->
       string_of_int x
    | Add (e1, e2) ->
       Printf.sprintf "(%s + %s)" (aux e1) (aux e2)
    | Mul (e1, e2) ->
       Printf.sprintf "(%s * %s)" (aux e1) (aux e2)
    | Sum (x, start, stop, exp) ->
       Printf.sprintf "sum(%s, %s, %s, %s)"
         x (aux start) (aux stop) (aux exp)
  in
  aux e