and pattern =
| PTactic of loc * id * substs list
and expr =
- | EGoal of loc * goal
- | ETactic of loc * tactic
+ | EGoalDefn of loc * goal
+ | ETacticDefn of loc * tactic
| ECallGoal of loc * id * expr list
| ECallTactic of loc * id * expr list
| EVar of loc * id
failwithf "%a: goal ‘%s’ not found" string_loc loc name in
let goal =
match expr with
- | EGoal (loc, goal) -> goal
+ | EGoalDefn (loc, goal) -> goal
| _ ->
failwithf "%a: tried to call ‘%s’ which is not a goal"
string_loc loc name in
failwithf "%a: tactic ‘%s’ not found" string_loc loc name in
let tactic =
match expr with
- | ETactic (loc, tactic) -> tactic
+ | ETacticDefn (loc, tactic) -> tactic
| _ ->
failwithf "%a: tried to call ‘%s’ which is not a tactic"
string_loc loc name in
failwithf "%a: cannot use tactic ‘%s’ in constant expression"
string_loc loc name
- | EGoal (loc, _) ->
+ | EGoalDefn (loc, _) ->
failwithf "%a: cannot use goal in constant expression"
string_loc loc
- | ETactic (loc, _) ->
+ | ETacticDefn (loc, _) ->
failwithf "%a: cannot use tactic in constant expression"
string_loc loc
| ECallTactic (loc, _, []) -> Filename.quote ""
| ECallTactic (loc, _, (arg :: _)) -> expr_to_shell_string env arg
- | EGoal (loc, _) ->
+ | EGoalDefn (loc, _) ->
failwithf "%a: cannot use goal in shell expansion"
string_loc loc
- | ETactic (loc, _) ->
+ | ETacticDefn (loc, _) ->
failwithf "%a: cannot use tactic in shell expansion"
string_loc loc
and string_def () (name, expr) =
match expr with
- | EGoal (loc, goal) -> string_goal () (Some name, goal) ^ "\n"
- | ETactic (loc, tactic) -> string_tactic () (Some name, tactic) ^ "\n"
+ | EGoalDefn (loc, goal) -> string_goal () (Some name, goal) ^ "\n"
+ | ETacticDefn (loc, tactic) -> string_tactic () (Some name, tactic) ^ "\n"
| expr -> sprintf "let %s = %a\n" name string_expr expr;
and print_def fp name expr = output_string fp (string_def () (name, expr))
and print_pattern fp p = output_string fp (string_pattern () p)
and string_expr () = function
- | EGoal (loc, goal) -> string_goal () (None, goal)
- | ETactic (loc, goal) -> string_tactic () (None, goal)
+ | EGoalDefn (loc, goal) -> string_goal () (None, goal)
+ | ETacticDefn (loc, goal) -> string_tactic () (None, goal)
| ECallGoal (loc, name, params) ->
sprintf "%s (%s)"
name (String.concat ", " (List.map (string_expr ()) params))
List.iter (evaluate_target env) exprs
and evaluate_target env = function
- | Ast.EGoal _ | Ast.ETactic _ -> assert false
+ | Ast.EGoalDefn _ | Ast.ETacticDefn _ -> assert false
(* Call a goal. *)
| Ast.ECallGoal (loc, name, args) ->
| Ast.EVar (loc, name) ->
let expr = Ast.getvar env loc name in
(match expr with
- | EGoal (loc, ([], _, _, _)) ->
+ | EGoalDefn (loc, ([], _, _, _)) ->
evaluate_target env (Ast.ECallGoal (loc, name, []))
- | EGoal _ ->
+ | EGoalDefn _ ->
failwithf "%a: cannot call %s() since this goal has parameters"
Ast.string_loc loc name
| _ ->
let env = Ast.Env.bindings env in
filter_map
(function
- | name, Ast.EGoal (loc, goal) -> Some (name, goal)
+ | name, Ast.EGoalDefn (loc, goal) -> Some (name, goal)
| _ -> None) env in
(* Find all patterns. Returns a list of (pattern, name, goal). *)
| None ->
sprintf "_goal@%d" $startpos.pos_lnum, []
| Some x -> x in
- name, Ast.EGoal ($loc, (params, $2, $4, $5))
+ name, Ast.EGoalDefn ($loc, (params, $2, $4, $5))
}
| goal_stmt CODE
{
let name, params = $1 in
- name, Ast.EGoal ($loc, (params, [], [], Some $2))
+ name, Ast.EGoalDefn ($loc, (params, [], [], Some $2))
}
| TACTIC_KEYWORD TACTIC params_decl EQUALS CODE
{
- $2, Ast.ETactic ($loc, ($3, $5))
+ $2, Ast.ETacticDefn ($loc, ($3, $5))
}
| LET ID EQUALS expr { $2, $4 }
;