X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcomponents%2Fgrafite_parser%2FgrafiteParser.ml;h=9b5ecfe7c907cb23e94d618eededc5b8228c9071;hb=2e17165ef9e63367cc290ad555145b4c22a4582b;hp=6da952c7d2ada70e80cc973925c747d7d07a25fd;hpb=939dfce0cb12f7e7760a24d89f6812890b9df431;p=helm.git diff --git a/matita/components/grafite_parser/grafiteParser.ml b/matita/components/grafite_parser/grafiteParser.ml index 6da952c7d..9b5ecfe7c 100644 --- a/matita/components/grafite_parser/grafiteParser.ml +++ b/matita/components/grafite_parser/grafiteParser.ml @@ -28,8 +28,6 @@ module N = NotationPt module G = GrafiteAst -type ast_statement = G.statement - let exc_located_wrapper f = try f () @@ -44,9 +42,15 @@ let exc_located_wrapper f = raise (HExtlib.Localized (floc,CicNotationParser.Parse_error (Printexc.to_string exn))) -let parse_statement grafite_parser lexbuf = +type parsable = Grammar.parsable + +let parsable_statement status buf = + let grammar = CicNotationParser.level2_ast_grammar status in + Grammar.parsable grammar (Obj.magic buf) + +let parse_statement grafite_parser parsable = exc_located_wrapper - (fun () -> (Grammar.Entry.parse (Obj.magic grafite_parser) (Obj.magic lexbuf))) + (fun () -> (Grammar.Entry.parse_parsable (Obj.magic grafite_parser) parsable)) let add_raw_attribute ~text t = N.AttributedTerm (`Raw text, t) @@ -220,8 +224,11 @@ EXTEND G.NTactic(loc,[G.NCases (loc, what, where)]) | IDENT "change"; what = pattern_spec; "with"; with_what = tactic_term -> G.NTactic(loc,[G.NChange (loc, what, with_what)]) - | SYMBOL "@"; num = OPT NUMBER; l = LIST0 tactic_term -> - G.NTactic(loc,[G.NConstructor (loc, (match num with None -> None | Some x -> Some (int_of_string x)),l)]) + | SYMBOL "-"; ids = LIST1 IDENT -> + G.NTactic(loc,[G.NClear (loc, ids)]) + | (*SYMBOL "^"*)PLACEHOLDER; num = OPT NUMBER; + l = OPT [ SYMBOL "{"; l = LIST1 tactic_term; SYMBOL "}" -> l ] -> + G.NTactic(loc,[G.NConstructor (loc, (match num with None -> None | Some x -> Some (int_of_string x)),match l with None -> [] | Some l -> l)]) | IDENT "cut"; t = tactic_term -> G.NTactic(loc,[G.NCut (loc, t)]) (* | IDENT "discriminate"; t = tactic_term -> G.NDiscriminate (loc, t) | IDENT "subst"; t = tactic_term -> G.NSubst (loc, t) *) @@ -517,6 +524,8 @@ EXTEND include_command: [ [ IDENT "include" ; path = QSTRING -> loc,path,G.WithPreferences + | IDENT "include" ; IDENT "alias"; path = QSTRING -> + loc,path,G.OnlyPreferences | IDENT "include'" ; path = QSTRING -> loc,path,G.WithoutPreferences ]]; @@ -536,9 +545,9 @@ EXTEND paramspec = OPT inverter_param_list ; outsort = OPT [ SYMBOL ":" ; outsort = term -> outsort ] -> G.NInverter (loc,name,indty,paramspec,outsort) - | NLETCOREC ; defs = let_defs -> + | LETCOREC ; defs = let_defs -> nmk_rec_corec `CoInductive defs loc - | NLETREC ; defs = let_defs -> + | LETREC ; defs = let_defs -> nmk_rec_corec `Inductive defs loc | IDENT "inductive"; spec = inductive_spec -> let (params, ind_types) = spec in @@ -619,7 +628,7 @@ EXTEND statement ;; -type db = ast_statement Grammar.Entry.e ;; +type db = GrafiteAst.statement Grammar.Entry.e ;; class type g_status = object