aboutsummaryrefslogtreecommitdiff
path: root/doc/tools
diff options
context:
space:
mode:
authorThéo Zimmermann2020-03-10 17:40:14 +0100
committerThéo Zimmermann2020-03-12 10:48:33 +0100
commit6d690bf1ea5ad7fedf91865f52091daedb0cf43c (patch)
treecbaf89bfea279e366eca69a8e54d5cf39ccafa26 /doc/tools
parent3a5469b2097c55ecf952ead470caf03b6112cd9e (diff)
Dune build rules for doc_grammar and fullGrammar.
Diffstat (limited to 'doc/tools')
-rw-r--r--doc/tools/docgram/README.md15
-rw-r--r--doc/tools/docgram/dune30
2 files changed, 38 insertions, 7 deletions
diff --git a/doc/tools/docgram/README.md b/doc/tools/docgram/README.md
index fc6d0ace0d..8f325f957a 100644
--- a/doc/tools/docgram/README.md
+++ b/doc/tools/docgram/README.md
@@ -1,12 +1,13 @@
# Grammar extraction tool for documentation
-`doc_grammar` extracts Coq's grammar from `.mlg` files, edits it and inserts it in
-chunks into `.rst` files. The tool currently inserts Sphinx
-`productionlist` constructs. It also generates a file with `prodn` constructs
-for the entire grammar, but updates to `tacn` and `cmd` constructs must be done
-manually since the grammar doesn't have names for them as it does for
-nonterminals. There is an option to report which `tacn` and `cmd` were not
-found in the `.rst` files. `tacv` and `cmdv` constructs are not processed at all.
+`doc_grammar` extracts Coq's grammar from `.mlg` files, edits it and
+inserts it in chunks into `.rst` files. The tool currently inserts
+Sphinx `productionlist` and `prodn` constructs (`productionlist` are
+gradually being replaced by `prodn` in the manual). Updates to `tacn`
+and `cmd` constructs must be done manually since the grammar doesn't
+have names for them as it does for nonterminals. There is an option
+to report which `tacn` and `cmd` were not found in the `.rst` files.
+`tacv` and `cmdv` constructs are not processed at all.
The mlg grammars present several challenges to generating an accurate grammar
for documentation purposes:
diff --git a/doc/tools/docgram/dune b/doc/tools/docgram/dune
new file mode 100644
index 0000000000..3afa21f2cf
--- /dev/null
+++ b/doc/tools/docgram/dune
@@ -0,0 +1,30 @@
+(executable
+ (name doc_grammar)
+ (libraries coq.clib coqpp))
+
+(env (_ (binaries doc_grammar.exe)))
+
+(rule
+ (targets fullGrammar)
+ (deps
+ ; Main grammar
+ (glob_files %{project_root}/parsing/*.mlg)
+ (glob_files %{project_root}/toplevel/*.mlg)
+ (glob_files %{project_root}/vernac/*.mlg)
+ ; All plugins except SSReflect for now (mimicking what is done in Makefile.doc)
+ (glob_files %{project_root}/plugins/btauto/*.mlg)
+ (glob_files %{project_root}/plugins/cc/*.mlg)
+ (glob_files %{project_root}/plugins/derive/*.mlg)
+ (glob_files %{project_root}/plugins/extraction/*.mlg)
+ (glob_files %{project_root}/plugins/firstorder/*.mlg)
+ (glob_files %{project_root}/plugins/funind/*.mlg)
+ (glob_files %{project_root}/plugins/ltac/*.mlg)
+ (glob_files %{project_root}/plugins/micromega/*.mlg)
+ (glob_files %{project_root}/plugins/nsatz/*.mlg)
+ (glob_files %{project_root}/plugins/omega/*.mlg)
+ (glob_files %{project_root}/plugins/rtauto/*.mlg)
+ (glob_files %{project_root}/plugins/setoid_ring/*.mlg)
+ (glob_files %{project_root}/plugins/syntax/*.mlg))
+ (action
+ (chdir %{project_root} (run doc_grammar -short -no-warn %{deps})))
+ (mode promote))