diff --git a/src/main.ml b/src/main.ml index e0c67f3..3652564 100644 --- a/src/main.ml +++ b/src/main.ml @@ -25,7 +25,7 @@ let exec_passes ast main_fn verbose debug passes f = let _ = (** Usage and argument parsing. *) - let default_passes = ["pre2vars"; "automata_validity" ;"automata_translation"; "linearization"; "equations_ordering"] in + let default_passes = ["automata_validity" ;"automata_translation"; "linearization"; "pre2vars"; "equations_ordering"] in let sanity_passes = ["chkvar_init_unicity"; "check_typing"] in let usage_msg = "Usage: main [-passes p1,...,pn] [-ast] [-verbose] [-debug] \ diff --git a/src/passes.ml b/src/passes.ml index e31b3b3..e1ae5a9 100644 --- a/src/passes.ml +++ b/src/passes.ml @@ -188,9 +188,9 @@ let pass_linearization verbose debug main_fn = | [TReal] -> RVar nvar | _ -> failwith "Should not happened." in let neq_patt: t_varlist = (t, [nvar]) in - let neq_expr: t_expression = EMonOp (t, MOp_pre, e) in + let neq_expr: t_expression = e in let vars = varlist_concat (t, [nvar]) vars in - (neq_patt, neq_expr) :: eqs, vars, EVar (t, nvar) + (neq_patt, neq_expr) :: eqs, vars, EMonOp (t, MOp_pre, EVar (t, nvar)) | _ -> let eqs, vars, e = pre_aux_expression vars e in eqs, vars, EMonOp (t, op, e) @@ -228,8 +228,7 @@ let pass_linearization verbose debug main_fn = let eqs, vars, e = pre_aux_expression vars e in eqs, vars, EApp (t, n, e) in - let rec pre_aux_equation (vars: t_varlist) (eq: t_equation) = - let (patt, expr) = eq in + let rec pre_aux_equation (vars: t_varlist) ((patt, expr): t_equation) = let eqs, vars, expr = pre_aux_expression vars expr in (patt, expr)::eqs, vars in @@ -259,7 +258,7 @@ let pass_linearization verbose debug main_fn = (fun (eqs, vars) eq -> let es, vs = pre_aux_equation vars eq in es @ eqs, ((fst vs) @ (fst vars), (snd vs) @ (snd vars))) - (new_equations, node.n_local_vars) + ([], node.n_local_vars) new_equations in Some diff --git a/src/test2.node b/src/test2.node index 36209a1..2116ba7 100644 --- a/src/test2.node +++ b/src/test2.node @@ -1,7 +1,4 @@ -node diagonal_int (i: int) returns (o1, o2 : int); -var y: int; +node main (i: int) returns (o1: int); let - o2 = y; - y = i; - o1 = i; + o1 = 10 -> pre (20 -> 30); tel