diff options
Diffstat (limited to 'parsing/pcoq.mli')
-rw-r--r-- | parsing/pcoq.mli | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/parsing/pcoq.mli b/parsing/pcoq.mli new file mode 100644 index 000000000..5bd9a31da --- /dev/null +++ b/parsing/pcoq.mli @@ -0,0 +1,228 @@ + +(* $Id$ *) + +(* The lexer and parser of Coq. *) + +val lexer : Token.lexer + +module Gram : Grammar.S + +type typed_entry = + | Ast of Coqast.t Gram.Entry.e + | ListAst of Coqast.t list Gram.Entry.e + +val grammar_extend : + typed_entry -> Gramext.position option -> + (string option * Gramext.g_assoc option * + (Gramext.g_symbol list * Gramext.g_action) list) list + -> unit + +val remove_grammars : int -> unit + +(* Parse a string *) + +val parse_string : 'a Gram.Entry.e -> string -> 'a +val eoi_entry : 'a Gram.Entry.e -> 'a Gram.Entry.e +val map_entry : ('a -> 'b) -> 'a Gram.Entry.e -> 'b Gram.Entry.e + +val slam_ast : Coqast.loc -> Coqast.t -> Coqast.t -> Coqast.t + +(* Entry types *) + +type entry_type = ETast | ETastl + +val entry_type : Coqast.t -> entry_type +val type_of_entry : typed_entry -> entry_type + +(* Table of Coq's grammar entries *) + +type gram_universe + +val get_univ : string -> string * gram_universe +val get_entry : string * gram_universe -> string -> typed_entry + +val create_entry : string * gram_universe -> string -> entry_type -> + typed_entry +val force_entry_type : string * gram_universe -> string -> + entry_type -> typed_entry + +(* Quotations *) + +val define_quotation : bool -> string -> (Coqast.t Gram.Entry.e) -> unit + +(* The main entry: reads an optional vernac command *) + +val main_entry : Coqast.t option Gram.Entry.e + +(* Initial state of the grammar *) + +module Command : + sig + val abstraction_tail : Coqast.t Gram.Entry.e + val binder : Coqast.t Gram.Entry.e + val cofixbinder : Coqast.t Gram.Entry.e + val cofixbinders : Coqast.t list Gram.Entry.e + val command : Coqast.t Gram.Entry.e + val command0 : Coqast.t Gram.Entry.e + val command1 : Coqast.t Gram.Entry.e + val command10 : Coqast.t Gram.Entry.e + val command2 : Coqast.t Gram.Entry.e + val command3 : Coqast.t Gram.Entry.e + val command5 : Coqast.t Gram.Entry.e + val command6 : Coqast.t Gram.Entry.e + val command7 : Coqast.t Gram.Entry.e + val command8 : Coqast.t Gram.Entry.e + val command9 : Coqast.t Gram.Entry.e + val command91 : Coqast.t Gram.Entry.e + val command_eoi : Coqast.t Gram.Entry.e + val equation : Coqast.t Gram.Entry.e + val fixbinder : Coqast.t Gram.Entry.e + val fixbinders : Coqast.t list Gram.Entry.e + val ident : Coqast.t Gram.Entry.e + val lassoc_command4 : Coqast.t Gram.Entry.e + val lcommand : Coqast.t Gram.Entry.e + val lsimple_pattern : (string list * Coqast.t) Gram.Entry.e + val ne_binder_list : Coqast.t list Gram.Entry.e + val ne_command91_list : Coqast.t list Gram.Entry.e + val ne_command9_list : Coqast.t list Gram.Entry.e + val ne_command_list : Coqast.t list Gram.Entry.e + val ne_eqn_list : Coqast.t list Gram.Entry.e + val ne_ident_comma_list : Coqast.t list Gram.Entry.e + val ne_pattern_list : (string list * Coqast.t list) Gram.Entry.e + val pattern : (string list * Coqast.t) Gram.Entry.e + val pattern_list : (string list * Coqast.t list) Gram.Entry.e + val product_tail : Coqast.t Gram.Entry.e + val raw_command : Coqast.t Gram.Entry.e + val simple_pattern : (string list * Coqast.t) Gram.Entry.e + val simple_pattern2 : (string list * Coqast.t) Gram.Entry.e + val simple_pattern_list : (string list * Coqast.t list) Gram.Entry.e + end + +module Tactic : + sig + val autoarg_adding : Coqast.t Gram.Entry.e + val autoarg_depth : Coqast.t Gram.Entry.e + val autoarg_destructing : Coqast.t Gram.Entry.e + val autoarg_excluding : Coqast.t Gram.Entry.e + val autoarg_usingTDB : Coqast.t Gram.Entry.e + val binding_list : Coqast.t Gram.Entry.e + val clausearg : Coqast.t Gram.Entry.e + val cofixdecl : Coqast.t list Gram.Entry.e + val com_binding_list : Coqast.t list Gram.Entry.e + val comarg : Coqast.t Gram.Entry.e + val comarg_binding_list : Coqast.t list Gram.Entry.e + val comarg_list : Coqast.t list Gram.Entry.e + val fixdecl : Coqast.t list Gram.Entry.e + val identarg : Coqast.t Gram.Entry.e + val intropattern : Coqast.t Gram.Entry.e + val lcomarg : Coqast.t Gram.Entry.e + val lcomarg_binding_list : Coqast.t list Gram.Entry.e + val ne_identarg_list : Coqast.t list Gram.Entry.e + val ne_intropattern : Coqast.t Gram.Entry.e + val ne_num_list : Coqast.t list Gram.Entry.e + val ne_pattern_list : Coqast.t list Gram.Entry.e + val ne_pattern_hyp_list : Coqast.t list Gram.Entry.e + val ne_unfold_occ_list : Coqast.t list Gram.Entry.e + val numarg : Coqast.t Gram.Entry.e + val numarg_binding_list : Coqast.t list Gram.Entry.e + val one_intropattern : Coqast.t Gram.Entry.e + val pattern_occ : Coqast.t Gram.Entry.e + val pattern_occ_hyp : Coqast.t Gram.Entry.e + val red_flag : Coqast.t Gram.Entry.e + val red_tactic : Coqast.t Gram.Entry.e + val simple_binding : Coqast.t Gram.Entry.e + val simple_binding_list : Coqast.t list Gram.Entry.e + val simple_intropattern : Coqast.t Gram.Entry.e + val simple_tactic : Coqast.t Gram.Entry.e + val tactic : Coqast.t Gram.Entry.e + val tactic_com : Coqast.t Gram.Entry.e + val tactic_com_list : Coqast.t Gram.Entry.e + val tactic_com_tail : Coqast.t Gram.Entry.e + val tactic_eoi : Coqast.t Gram.Entry.e + val unfold_occ : Coqast.t Gram.Entry.e + val with_binding_list : Coqast.t Gram.Entry.e + end + +module Vernac : + sig + val binder : Coqast.t Gram.Entry.e + val block : Coqast.t list Gram.Entry.e + val block_old_style : Coqast.t list Gram.Entry.e + val check_tok : Coqast.t Gram.Entry.e + val comarg : Coqast.t Gram.Entry.e + val def_tok : Coqast.t Gram.Entry.e + val definition_tail : Coqast.t Gram.Entry.e + val dep : Coqast.t Gram.Entry.e + val destruct_location : Coqast.t Gram.Entry.e + val destruct_location : Coqast.t Gram.Entry.e + val extracoindblock : Coqast.t list Gram.Entry.e + val extraindblock : Coqast.t list Gram.Entry.e + val field : Coqast.t Gram.Entry.e + val fields : Coqast.t Gram.Entry.e + val finite_tok : Coqast.t Gram.Entry.e + val hyp_tok : Coqast.t Gram.Entry.e + val hyps_tok : Coqast.t Gram.Entry.e + val idcom : Coqast.t Gram.Entry.e + val identarg : Coqast.t Gram.Entry.e + val import_tok : Coqast.t Gram.Entry.e + val indpar : Coqast.t Gram.Entry.e + val lcomarg : Coqast.t Gram.Entry.e + val lidcom : Coqast.t Gram.Entry.e + val orient:Coqast.t Gram.Entry.e;; + val lvernac : Coqast.t list Gram.Entry.e + val meta_binding : Coqast.t Gram.Entry.e + val meta_binding_list : Coqast.t list Gram.Entry.e + val ne_binder_semi_list : Coqast.t list Gram.Entry.e + val ne_comarg_list : Coqast.t list Gram.Entry.e + val ne_identarg_comma_list : Coqast.t list Gram.Entry.e + val ne_identarg_list : Coqast.t list Gram.Entry.e + val ne_lidcom : Coqast.t list Gram.Entry.e + val ne_numarg_list : Coqast.t list Gram.Entry.e + val ne_stringarg_list : Coqast.t list Gram.Entry.e + val nefields : Coqast.t list Gram.Entry.e + val numarg : Coqast.t Gram.Entry.e + val numarg_list : Coqast.t list Gram.Entry.e + val onecorec : Coqast.t Gram.Entry.e + val oneind : Coqast.t Gram.Entry.e + val oneind_old_style : Coqast.t Gram.Entry.e + val onerec : Coqast.t Gram.Entry.e + val onescheme : Coqast.t Gram.Entry.e + val opt_identarg_list : Coqast.t list Gram.Entry.e + val option_value : Coqast.t Gram.Entry.e + val param_tok : Coqast.t Gram.Entry.e + val params_tok : Coqast.t Gram.Entry.e + val rec_constr : Coqast.t Gram.Entry.e + val record_tok : Coqast.t Gram.Entry.e + val sortdef : Coqast.t Gram.Entry.e + val specif_tok : Coqast.t Gram.Entry.e + val specifcorec : Coqast.t list Gram.Entry.e + val specifrec : Coqast.t list Gram.Entry.e + val specifscheme : Coqast.t list Gram.Entry.e + val stringarg : Coqast.t Gram.Entry.e + val tacarg : Coqast.t Gram.Entry.e + val theorem_body : Coqast.t Gram.Entry.e + val theorem_body_line : Coqast.t Gram.Entry.e + val theorem_body_line_list : Coqast.t list Gram.Entry.e + val thm_tok : Coqast.t Gram.Entry.e + val varg_ne_stringarg_list : Coqast.t Gram.Entry.e + val vernac : Coqast.t Gram.Entry.e + val vernac_eoi : Coqast.t Gram.Entry.e + end + +module Prim : + sig + val ast : Coqast.t Gram.Entry.e + val ast_eoi : Coqast.t Gram.Entry.e + val astact : Coqast.t Gram.Entry.e + val astpat: Coqast.t Gram.Entry.e + val entry_type : Coqast.t Gram.Entry.e + val grammar_entry : Coqast.t Gram.Entry.e + val grammar_entry_eoi : Coqast.t Gram.Entry.e + val ident : Coqast.t Gram.Entry.e + val number : Coqast.t Gram.Entry.e + val path : Coqast.t Gram.Entry.e + val string : Coqast.t Gram.Entry.e + val syntax_entry : Coqast.t Gram.Entry.e + val syntax_entry_eoi : Coqast.t Gram.Entry.e + val var : Coqast.t Gram.Entry.e + end |