X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=matita%2Fcomponents%2Fgrafite_parser%2FgrafiteParser.ml;h=492274f97ec50ff49196c271d24efdd949976bfd;hb=894d518aa760c9f816ddb0dc2b3fa88e1fe20a94;hp=8c2cbf9093554893d28cb6f9601854755e28aceb;hpb=5e924927db28c0a5bbbaa4e56515d9afe0b1360f;p=helm.git diff --git a/matita/components/grafite_parser/grafiteParser.ml b/matita/components/grafite_parser/grafiteParser.ml index 8c2cbf909..492274f97 100644 --- a/matita/components/grafite_parser/grafiteParser.ml +++ b/matita/components/grafite_parser/grafiteParser.ml @@ -42,6 +42,12 @@ let exc_located_wrapper f = raise (HExtlib.Localized (floc,CicNotationParser.Parse_error (Printexc.to_string exn))) +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_parsable (Obj.magic grafite_parser) parsable)) @@ -160,7 +166,10 @@ EXTEND | N.Implicit _ -> false | N.UserInput -> true | _ -> raise (Invalid_argument "malformed target parameter list 1")) l - | _ -> raise (Invalid_argument ("malformed target parameter list 2\n" ^ NotationPp.pp_term params)) ] + | _ -> + (*CSC: new NCicPp.status is the best I can do here without changing the + result type *) + raise (Invalid_argument ("malformed target parameter list 2\n" ^ NotationPp.pp_term (new NCicPp.status) params)) ] ]; direction: [ [ SYMBOL ">" -> `LeftToRight @@ -630,10 +639,10 @@ class type g_status = method parser_db: db end -class status = +class virtual status = object(self) inherit CicNotationParser.status ~keywords:[] - val mutable db = None + val mutable db = None (* mutable only to initialize it :-( *) method parser_db = match db with None -> assert false | Some x -> x method set_parser_db v = {< db = Some v >} method set_parser_status