bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 09/17] multistart: pass the list of start symbols to the backend


From: Akim Demaille
Subject: [PATCH 09/17] multistart: pass the list of start symbols to the backend
Date: Sun, 20 Sep 2020 10:37:41 +0200

* src/output.c (start_symbols_output): New.
(muscles_output): Use it.
---
 src/output.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/src/output.c b/src/output.c
index 64d40e51..a0685dd5 100644
--- a/src/output.c
+++ b/src/output.c
@@ -461,6 +461,27 @@ type_names_output (FILE *out)
 }
 
 
+/* Define the list of start symbols *if* there are several.  Define
+   them by pairs: [START-SYMBOL-NUM, SWITCHING-TOKEN-SYMBOL-NUM]. */
+static void
+start_symbols_output (FILE *out)
+{
+  if (start_symbols && start_symbols->next)
+    {
+      fputs ("m4_define([b4_start_symbols],\n[", out);
+      for (symbol_list *list = start_symbols; list; list = list->next)
+        {
+          const symbol *start = list->content.sym;
+          const symbol *swtok = switching_token (start);
+          fprintf (out, "%s[%d, %d]",
+                   list == start_symbols ? "" : ", ",
+                   start->content->number, swtok->content->number);
+        }
+      fputs ("])\n\n", out);
+    }
+}
+
+
 /*-------------------------------------.
 | The list of all the symbol numbers.  |
 `-------------------------------------*/
@@ -691,6 +712,7 @@ muscles_output (FILE *out)
   merger_output (out);
   symbol_numbers_output (out);
   type_names_output (out);
+  start_symbols_output (out);
   user_actions_output (out);
   /* Must be last.  */
   muscles_m4_output (out);
-- 
2.28.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]