Source file g_ltac2_ltac1.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
let _ = Mltop.add_known_module "rocq-runtime.plugins.ltac2_ltac1"
# 13 "plugins/ltac2_ltac1/g_ltac2_ltac1.mlg"
open Procq.Prim
open Ltac2_plugin
open Tac2expr
open Ltac_plugin
open Ltac2_plugin.G_ltac2
let ltac_expr = Pltac.ltac_expr
let inj_wit wit loc x = CAst.make ~loc @@ CTacExt (wit, x)
let inj_ltac1 loc e = inj_wit Tac2quote_ltac1.wit_ltac1 loc e
let inj_ltac1val loc e = inj_wit Tac2quote_ltac1.wit_ltac1val loc e
let _ =
let ltac1_expr_in_env = Procq.Entry.make "ltac1_expr_in_env"
in
let () =
Egramml.grammar_extend ~plugin_uid:("rocq-runtime.plugins.ltac2_ltac1", "g_ltac2_ltac1.mlg:0")
ltac2_atom
(Procq.Reuse (None, [Procq.Production.make
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next (Procq.Rule.stop)
((Procq.Symbol.token (Tok.PIDENT (Some
("ltac1val"))))))
((Procq.Symbol.token (Tok.PKEYWORD (":")))))
((Procq.Symbol.token (Tok.PKEYWORD ("(")))))
((Procq.Symbol.nterm ltac1_expr_in_env)))
((Procq.Symbol.token (Tok.PKEYWORD (")")))))
(fun _ qid _ _ _ loc ->
# 34 "plugins/ltac2_ltac1/g_ltac2_ltac1.mlg"
inj_ltac1val loc qid
);
Procq.Production.make
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next (Procq.Rule.stop)
((Procq.Symbol.token (Tok.PIDENT (Some
("ltac1"))))))
((Procq.Symbol.token (Tok.PKEYWORD (":")))))
((Procq.Symbol.token (Tok.PKEYWORD ("(")))))
((Procq.Symbol.nterm ltac1_expr_in_env)))
((Procq.Symbol.token (Tok.PKEYWORD (")")))))
(fun _ qid _ _ _ loc ->
# 33 "plugins/ltac2_ltac1/g_ltac2_ltac1.mlg"
inj_ltac1 loc qid
)]))
in let () = assert (Procq.Entry.is_empty ltac1_expr_in_env) in
let () =
Egramml.grammar_extend ~plugin_uid:("rocq-runtime.plugins.ltac2_ltac1", "g_ltac2_ltac1.mlg:1")
ltac1_expr_in_env
(Procq.Fresh
(Gramlib.Gramext.First, [(None, None,
[Procq.Production.make
(Procq.Rule.next (Procq.Rule.stop)
((Procq.Symbol.nterm ltac_expr)))
(fun e loc ->
# 38 "plugins/ltac2_ltac1/g_ltac2_ltac1.mlg"
[], e
);
Procq.Production.make
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next
(Procq.Rule.next (Procq.Rule.stop)
((Procq.Symbol.nterm test_ltac1_env)))
((Procq.Symbol.list0 (Procq.Symbol.nterm identref))))
((Procq.Symbol.token (Tok.PKEYWORD ("|-")))))
((Procq.Symbol.nterm ltac_expr)))
(fun e _ ids _ loc ->
# 37 "plugins/ltac2_ltac1/g_ltac2_ltac1.mlg"
ids, e
)])]))
in ()