From 287dfa9d6e5213d4c578f5b3485fc52a86ce7934 Mon Sep 17 00:00:00 2001 From: Claudio Sacerdoti Coen Date: Fri, 1 Jul 2005 09:25:51 +0000 Subject: [PATCH] Syntax of patterns changed again to make it non-ambiguous: [in match t] [in sequent_pattern] --- .../cic_disambiguation/cicTextualParser2.ml | 56 +++++++++++-------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/helm/ocaml/cic_disambiguation/cicTextualParser2.ml b/helm/ocaml/cic_disambiguation/cicTextualParser2.ml index 072b8fa03..a879ccf94 100644 --- a/helm/ocaml/cic_disambiguation/cicTextualParser2.ml +++ b/helm/ocaml/cic_disambiguation/cicTextualParser2.ml @@ -327,31 +327,41 @@ EXTEND | [ IDENT "whd" ] -> `Whd | [ IDENT "normalize" ] -> `Normalize ] ]; + sequent_pattern_spec : [ + [ 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 ] -> + let goal_path = + match goal_path with + None -> CicAst.UserInput + | Some goal_path -> goal_path + in + hyp_paths,goal_path + ] + ]; pattern_spec: [ - [ wanted = OPT term; - hyp_paths_and_goal_path = - OPT [ - "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 ] -> - let goal_path = - match goal_path with - None -> CicAst.UserInput - | Some goal_path -> goal_path - in - hyp_paths,goal_path - ] -> - let hyp_paths,goal_path = - match hyp_paths_and_goal_path with - None -> [], CicAst.UserInput - | Some (hyp_paths,goal_path) -> hyp_paths,goal_path + [ res = OPT [ + "in"; + wanted_and_sps = + [ "match" ; wanted = term ; + sps = OPT [ "in"; sps = sequent_pattern_spec -> sps ] -> + Some wanted,sps + | sps = sequent_pattern_spec -> + None,Some sps + ] -> + let wanted,hyp_paths,goal_path = + match wanted_and_sps with + wanted,None -> wanted, [], CicAst.UserInput + | wanted,Some (hyp_paths,goal_path) -> wanted,hyp_paths,goal_path in - wanted, hyp_paths, goal_path ] + wanted, hyp_paths, goal_path ] -> + match res with + None -> None,[],CicAst.UserInput + | Some ps -> ps] ]; direction: [ [ SYMBOL ">" -> `LeftToRight -- 2.39.2