X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_disambiguation%2FcicTextualParser2.ml;h=d3d6e28aebcbb4377d9ad343774b89b16b4ba601;hb=aa0c24992572f26d8e78ae34b60c7e151167cf49;hp=a1fcc92050d63b76a2a3c2dfd1f8c83496a53ad9;hpb=49959160408fc4c9629985bd691f7c76523d849d;p=helm.git diff --git a/helm/ocaml/cic_disambiguation/cicTextualParser2.ml b/helm/ocaml/cic_disambiguation/cicTextualParser2.ml index a1fcc9205..d3d6e28ae 100644 --- a/helm/ocaml/cic_disambiguation/cicTextualParser2.ml +++ b/helm/ocaml/cic_disambiguation/cicTextualParser2.ml @@ -312,16 +312,10 @@ EXTEND | PAREN "("; t = term; PAREN ")" -> return_term loc t ] ]; - tactic_where: [ - [ where = OPT [ "in"; ident = IDENT -> ident ] -> where ] - ]; tactic_term: [ [ t = term -> t ] ]; ident_list0: [ [ PAREN "["; idents = LIST0 IDENT SEP SYMBOL ";"; PAREN "]" -> idents ] ]; - ident_list1: [ - [ PAREN "["; idents = LIST1 IDENT SEP SYMBOL ";"; PAREN "]" -> idents ] - ]; reduction_kind: [ [ [ IDENT "reduce" ] -> `Reduce | [ IDENT "simplify" ] -> `Simpl @@ -329,14 +323,14 @@ EXTEND | [ IDENT "normalize" ] -> `Normalize ] ]; pattern_spec: [ - [ hyp_paths = - OPT [ - paths = LIST1 [ id = IDENT ; SYMBOL ":" ; path = term -> (id,path) ] - SEP SYMBOL ";"; - SYMBOL <:unicode> -> - paths ]; - goal_path = OPT term -> - let hyp_paths = match hyp_paths with None -> [] | Some l -> l in + [ "in"; + hyp_paths = + LIST0 + [ id = IDENT ; + path = OPT [SYMBOL ":" ; path = term -> path ] -> + (id,match path with Some p -> p | None -> CicAst.UserInput) ] + SEP SYMBOL ";"; + goal_path = OPT [ SYMBOL <:unicode>; term = term -> term ] -> (hyp_paths, goal_path) ] ]; direction: [ @@ -355,8 +349,7 @@ EXTEND | [ IDENT "auto" ] ; num = OPT [ i = NUM -> int_of_string i ] -> TacticAst.Auto (loc,num) | [ IDENT "change" ]; - t1 = tactic_term; "with"; t2 = tactic_term; - where = tactic_where -> + t1 = tactic_term; "with"; t2 = tactic_term; where = pattern_spec -> TacticAst.Change (loc, t1, t2, where) (* TODO Change_pattern *) | [ IDENT "contradiction" ] -> @@ -364,12 +357,11 @@ EXTEND | [ IDENT "cut" ]; t = tactic_term -> TacticAst.Cut (loc, t) - | [ IDENT "decompose" ]; - principles = ident_list1; where = IDENT -> - TacticAst.Decompose (loc, where, principles) + | [ IDENT "decompose" ]; where = term -> + TacticAst.Decompose (loc, where) | [ IDENT "discriminate" ]; - hyp = IDENT -> - TacticAst.Discriminate (loc, hyp) + t = tactic_term -> + TacticAst.Discriminate (loc, t) | [ IDENT "elimType" ]; t = tactic_term -> TacticAst.ElimType (loc, t) | [ IDENT "elim" ]; @@ -386,8 +378,8 @@ EXTEND | [ IDENT "fourier" ] -> TacticAst.Fourier loc | IDENT "goal"; n = NUM -> TacticAst.Goal (loc, int_of_string n) - | [ IDENT "injection" ]; ident = IDENT -> - TacticAst.Injection (loc, ident) + | [ IDENT "injection" ]; t = term -> + TacticAst.Injection (loc, t) | [ IDENT "intros" ]; num = OPT [ num = int -> num ]; idents = OPT ident_list0 -> @@ -400,16 +392,19 @@ EXTEND where = IDENT ; SYMBOL <:unicode> ; t = tactic_term -> TacticAst.LetIn (loc, t, where) | kind = reduction_kind; - p = OPT [ "in" ; p = pattern_spec -> p ] -> + p = OPT [ pattern_spec ] -> let p = match p with None -> [], None | Some p -> p in TacticAst.Reduce (loc, kind, p) + | IDENT "generalize"; t = tactic_term; p = OPT [ pattern_spec ] -> + let p = match p with None -> [], None | Some p -> p in + TacticAst.Generalize (loc,t,p) | [ IDENT "reflexivity" ] -> TacticAst.Reflexivity loc | [ IDENT "replace" ]; t1 = tactic_term; "with"; t2 = tactic_term -> TacticAst.Replace (loc, t1, t2) | IDENT "rewrite" ; d = direction; t = term ; - p = OPT [ "in"; p = pattern_spec -> p ] -> + p = OPT [ pattern_spec ] -> let p = match p with None -> [], None | Some p -> p in TacticAst.Rewrite (loc, d, t, p) | [ IDENT "right" ] -> TacticAst.Right loc @@ -420,10 +415,11 @@ EXTEND | [ IDENT "transitivity" ]; t = tactic_term -> TacticAst.Transitivity (loc, t) - | [ IDENT "fwd" ]; name = IDENT -> - TacticAst.FwdSimpl (loc, name) - | [ IDENT "lapply" ]; t = term -> - TacticAst.LApply (loc, t, []) + | [ IDENT "fwd" ]; t = term -> + TacticAst.FwdSimpl (loc, t) + | [ IDENT "lapply" ]; what = tactic_term; + to_what = OPT [ "to" ; t = tactic_term -> t ] -> + TacticAst.LApply (loc, to_what, what) ] ]; tactical: