aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Fehrle2020-04-09 12:20:29 -0700
committerJim Fehrle2020-04-10 15:01:56 -0700
commit190793771a8bfd487a1c3897321aacee0e599d55 (patch)
tree38f5b0158b9cf015057ca73ea46ecfdb26d36819
parentaa0babcd80d4e72d01e34fe8c83d3ac34eac8b9e (diff)
Suppress the space after "#" when printing productions
to reflect lexer requirement for no space
-rw-r--r--doc/tools/docgram/doc_grammar.ml7
1 files changed, 5 insertions, 2 deletions
diff --git a/doc/tools/docgram/doc_grammar.ml b/doc/tools/docgram/doc_grammar.ml
index 77273cdc5b..1afa2338fd 100644
--- a/doc/tools/docgram/doc_grammar.ml
+++ b/doc/tools/docgram/doc_grammar.ml
@@ -189,6 +189,9 @@ let rec db_output_prodn = function
and db_out_list prod = sprintf "(%s)" (map_and_concat db_output_prodn prod)
and db_out_prods prods = sprintf "( %s )" (map_and_concat ~delim:" | " db_out_list prods)
+(* identify special chars that don't get a trailing space in output *)
+let omit_space s = List.mem s ["?"; "."; "#"]
+
let rec output_prod plist need_semi = function
| Sterm s -> if plist then sprintf "%s" s else sprintf "\"%s\"" s
| Snterm s ->
@@ -225,7 +228,7 @@ let rec output_prod plist need_semi = function
and prod_to_str_r plist prod =
match prod with
- | Sterm s :: Snterm "ident" :: tl when List.mem s ["?"; "."] && plist ->
+ | Sterm s :: Snterm "ident" :: tl when omit_space s && plist ->
(sprintf "%s`ident`" s) :: (prod_to_str_r plist tl)
| p :: tl ->
let need_semi =
@@ -282,7 +285,7 @@ and output_sep sep =
and prod_to_prodn_r prod =
match prod with
- | Sterm s :: Snterm "ident" :: tl when List.mem s ["?"; "."] ->
+ | Sterm s :: Snterm "ident" :: tl when omit_space s ->
(sprintf "%s@ident" s) :: (prod_to_prodn_r tl)
| p :: tl -> (output_prodn p) :: (prod_to_prodn_r tl)
| [] -> []