X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fcomponents%2Fgrafite_parser%2FgrafiteParser.ml;h=5b092a6d310fc2dc3641374cc026a2a73118d194;hb=39b205d12af34c0c8d6e691da2628bc386b70cf2;hp=b3e42e63eba5b19d139b2eec70c9930597932507;hpb=cd664aefb80554952ed9b010f0c5199ce3a6f8f2;p=helm.git diff --git a/matita/components/grafite_parser/grafiteParser.ml b/matita/components/grafite_parser/grafiteParser.ml index b3e42e63e..5b092a6d3 100644 --- a/matita/components/grafite_parser/grafiteParser.ml +++ b/matita/components/grafite_parser/grafiteParser.ml @@ -578,6 +578,7 @@ EXTEND m = LIST0 [ u1 = URI; SYMBOL <:unicode>; u2 = URI -> u1,u2 ] -> G.NCopy (loc,s,NUri.uri_of_string u, List.map (fun a,b -> NUri.uri_of_string a, NUri.uri_of_string b) m) + | lc = lexicon_command -> lc ]]; lexicon_command: [ [ @@ -617,12 +618,6 @@ EXTEND LSome (G.Comment (loc, com)) | (iloc,fname,mode) = include_command ; SYMBOL "." -> LSome (G.Executable (loc,G.NCommand (loc,G.Include (iloc,mode,fname)))) - | scom = lexicon_command ; SYMBOL "." -> - assert false -(* - let status = LE.eval_command status scom in - status, LNone loc -*) | EOI -> raise End_of_file ] ]; @@ -635,24 +630,32 @@ type db = ast_statement localized_option Grammar.Entry.e ;; class type g_status = object - inherit LexiconTypes.g_status + inherit CicNotationParser.g_status method parser_db: db end class status = - let lstatus = assert false in - let grammar = CicNotationParser.level2_ast_grammar lstatus in - object - inherit LexiconTypes.status - val db = - mk_parser (Grammar.Entry.create grammar "statement") lstatus - method parser_db = db - method set_parser_db v = {< db = v >} + object(self) + inherit CicNotationParser.status ~keywords:[] + val mutable db = None + method parser_db = match db with None -> assert false | Some x -> x + method set_parser_db v = {< db = Some v >} method set_parser_status : 'status. #g_status as 'status -> 'self - = fun o -> {< db = o#parser_db >}#set_lexicon_engine_status o + = fun o -> {< db = Some o#parser_db >}#set_notation_parser_status o + initializer + let grammar = CicNotationParser.level2_ast_grammar self in + db <- Some (mk_parser (Grammar.Entry.create grammar "statement") self) end +let extend status l1 action = + let status = CicNotationParser.extend status l1 action in + let grammar = CicNotationParser.level2_ast_grammar status in + status#set_parser_db + (mk_parser (Grammar.Entry.create grammar "statement") status) +;; + + let parse_statement status = parse_statement status#parser_db