123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188let_=Mltop.add_known_module"rocq-plugin-tutorial.tuto2"# 61 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"(*** Dependencies from Coq ***)(*
* This lets us take non-terminal arguments to a command (for example,
* the PassInt command that takes an integer argument needs this
* this dependency).
*
* First used by: PassInt
*)openStdarg(*
* This is Coq's pretty-printing module. Here, we need it to use some
* useful syntax for pretty-printing.
*
* First use by: Count
*)openPp# 25 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml"let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"NoOp"~classifier:(fun~atts:__->Vernacextend.classify_as_query)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Nothing",Vernacextend.TyNil),(letcoqpp_body()=Vernactypes.vtdefault(fun()-># 92 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"()# 34 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infun?loc~atts()->coqpp_body(Attributes.unsupported_attributesatts)),None))]let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"NoOpTerminal"~classifier:(fun~atts:__->Vernacextend.classify_as_query)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Command",Vernacextend.TyTerminal("With",Vernacextend.TyTerminal("Some",Vernacextend.TyTerminal("Terminal",Vernacextend.TyTerminal("Parameters",Vernacextend.TyNil))))),(letcoqpp_body()=Vernactypes.vtdefault(fun()-># 180 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"()# 55 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infun?loc~atts()->coqpp_body(Attributes.unsupported_attributesatts)),None))]let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"PassInt"~classifier:(fun~atts:__->Vernacextend.classify_as_query)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Pass",Vernacextend.TyNonTerminal(Extend.TUentry(Genarg.get_arg_tagwit_int),Vernacextend.TyNil)),(letcoqpp_bodyi()=Vernactypes.vtdefault(fun()-># 220 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"()# 71 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infuni?loc~atts()->coqpp_bodyi(Attributes.unsupported_attributesatts)),None))]let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"AcceptIntList"~classifier:(fun~atts:__->Vernacextend.classify_as_query)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Accept",Vernacextend.TyNonTerminal(Extend.TUlist0(Extend.TUentry(Genarg.get_arg_tagwit_int)),Vernacextend.TyNil)),(letcoqpp_bodyl()=Vernactypes.vtdefault(fun()-># 314 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"()# 87 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infunl?loc~atts()->coqpp_bodyl(Attributes.unsupported_attributesatts)),None))]let(wit_custom,custom)=Vernacextend.vernac_argument_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~name:"custom"{Vernacextend.arg_parsing=Vernacextend.Arg_rules([(Procq.Production.make(Procq.Rule.next(Procq.Rule.stop)((Procq.Symbol.token(Procq.terminal"Bar"))))(fun_loc-># 422 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"Custom.Bar# 104 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml"));(Procq.Production.make(Procq.Rule.next(Procq.Rule.stop)((Procq.Symbol.token(Procq.terminal"Foo"))))(fun_loc-># 421 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"Custom.Foo# 112 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml"))]);Vernacextend.arg_printer=funenvsigma->fun_->Pp.str"missing printer";}let_=(wit_custom,custom)let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"PassCustom"~classifier:(fun~atts:__->Vernacextend.classify_as_query)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Foobar",Vernacextend.TyNonTerminal(Extend.TUentry(Genarg.get_arg_tagwit_custom),Vernacextend.TyNil)),(letcoqpp_bodyx()=Vernactypes.vtdefault(fun()-># 446 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"()# 129 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infunx?loc~atts()->coqpp_bodyx(Attributes.unsupported_attributesatts)),None))]let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"Awesome"~classifier:(fun~atts:__->Vernacextend.classify_as_query)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Is",Vernacextend.TyTerminal("Everything",Vernacextend.TyTerminal("Awesome",Vernacextend.TyNil))),(letcoqpp_body()=Vernactypes.vtdefault(fun()-># 478 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"Feedback.msg_notice(Pp.str"Everything is awesome!")# 148 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infun?loc~atts()->coqpp_body(Attributes.unsupported_attributesatts)),None))]let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"Count"~classifier:(fun~atts:__->Vernacextend.classify_as_sideeff)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Count",Vernacextend.TyNil),(letcoqpp_body()=Vernactypes.vtdefault(fun()-># 526 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"Counter.increment();letv=Counter.value()inFeedback.msg_notice(Pp.str"Times Count has been called: "++Pp.intv)# 165 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infun?loc~atts()->coqpp_body(Attributes.unsupported_attributesatts)),None))]let()=Vernacextend.static_vernac_extend~plugin:(Some"rocq-plugin-tutorial.tuto2")~command:"CountPersistent"~classifier:(fun~atts:__->Vernacextend.classify_as_sideeff)?entry:None[(Vernacextend.TyML(false,Vernacextend.TyTerminal("Count",Vernacextend.TyTerminal("Persistent",Vernacextend.TyNil)),(letcoqpp_body()=Vernactypes.vtdefault(fun()-># 596 "doc/plugin_tutorial/tuto2/src/g_tuto2.mlg"Persistent_counter.increment();letv=Persistent_counter.value()inFeedback.msg_notice(Pp.str"Times Count Persistent has been called: "++Pp.intv)# 184 "doc/plugin_tutorial/tuto2/src/g_tuto2.ml")infun?loc~atts()->coqpp_body(Attributes.unsupported_attributesatts)),None))]