These two patches simplify the 'parse-datetime' module:

- Since the module requires Bison, and the Bison-generated parser does not
  use the return value of the yyerror() function, this function can just as
  well return 'void'.

- The Makefile rules for generating two files from a single .y file are
  complicated. But the .h file generated by bison is not needed. We can
  tell Bison to generate only a .c file; this simplifies the Makefile rules.


2024-03-09  Bruno Haible  <br...@clisp.org>

        parse-datetime: Simplify.
        * modules/parse-datetime (Makefile.am): Don't generate
        parse-datetime-gen.h.

2024-03-09  Bruno Haible  <br...@clisp.org>

        parse-datetime: Simplify.
        * lib/parse-datetime.y (yyerror): Change return type to 'void'.

>From 005d84d6597a1c0ac607466144c29a81f168cf2c Mon Sep 17 00:00:00 2001
From: Bruno Haible <br...@clisp.org>
Date: Sat, 9 Mar 2024 12:45:06 +0100
Subject: [PATCH 1/2] parse-datetime: Simplify.

* lib/parse-datetime.y (yyerror): Change return type to 'void'.
---
 ChangeLog            | 5 +++++
 lib/parse-datetime.y | 5 ++---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 10de1262c3..6fed81caa6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-03-09  Bruno Haible  <br...@clisp.org>
+
+	parse-datetime: Simplify.
+	* lib/parse-datetime.y (yyerror): Change return type to 'void'.
+
 2024-03-09  Collin Funk  <collin.fu...@gmail.com>
 
 	gnulib-tool.py: Follow gnulib-tool changes, part 48.
diff --git a/lib/parse-datetime.y b/lib/parse-datetime.y
index b833055a8c..447a943db1 100644
--- a/lib/parse-datetime.y
+++ b/lib/parse-datetime.y
@@ -244,7 +244,7 @@ debugging (parser_control const *pc)
 
 union YYSTYPE;
 static int yylex (union YYSTYPE *, parser_control *);
-static int yyerror (parser_control const *, char const *);
+static void yyerror (parser_control const *, char const *);
 static bool time_zone_hhmm (parser_control *, textint, intmax_t);
 
 /* Extract into *PC any date and time info from a string of digits
@@ -1539,11 +1539,10 @@ yylex (union YYSTYPE *lvalp, parser_control *pc)
 }
 
 /* Do nothing if the parser reports an error.  */
-static int
+static void
 yyerror (_GL_UNUSED parser_control const *pc,
          _GL_UNUSED char const *s)
 {
-  return 0;
 }
 
 /* If *TM0 is the old and *TM1 is the new value of a struct tm after
-- 
2.34.1

>From 0ae976a99440496655971dacce5ae0e77cd32150 Mon Sep 17 00:00:00 2001
From: Bruno Haible <br...@clisp.org>
Date: Sat, 9 Mar 2024 13:00:28 +0100
Subject: [PATCH 2/2] parse-datetime: Simplify.

* modules/parse-datetime (Makefile.am): Don't generate
parse-datetime-gen.h.
---
 ChangeLog              |  6 ++++++
 modules/parse-datetime | 31 ++++++++-----------------------
 2 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6fed81caa6..66926b4268 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2024-03-09  Bruno Haible  <br...@clisp.org>
+
+	parse-datetime: Simplify.
+	* modules/parse-datetime (Makefile.am): Don't generate
+	parse-datetime-gen.h.
+
 2024-03-09  Bruno Haible  <br...@clisp.org>
 
 	parse-datetime: Simplify.
diff --git a/modules/parse-datetime b/modules/parse-datetime
index 60ac0b0824..1645660abe 100644
--- a/modules/parse-datetime
+++ b/modules/parse-datetime
@@ -45,35 +45,20 @@ Makefile.am:
 # Additionally, here we assume GNU Bison and therefore don't need the ylwrap
 # script.
 # Therefore we override this rule.
-# Since this is a rule that produces multiple files, we apply the idiom from
-# <https://lists.gnu.org/archive/html/bug-make/2020-09/msg00008.html>, so that
-# it works also in parallel 'make'.
-generate-parse-datetime:
-	$(AM_V_YACC)$(PARSE_DATETIME_BISON) -d $(YFLAGS) $(AM_YFLAGS) $(srcdir)/parse-datetime.y \
+parse-datetime.c: parse-datetime.y
+	$(AM_V_YACC)$(PARSE_DATETIME_BISON) $(YFLAGS) $(AM_YFLAGS) $(srcdir)/parse-datetime.y \
 	&& test ':' = '$(PARSE_DATETIME_BISON)' || { \
 	  sed -e 's|".*/parse-datetime\.y"|"parse-datetime.y"|' \
 	      -e 's|"parse-datetime\.tab\.c"|"parse-datetime.c"|' \
-	      -e 's|"parse-datetime\.tab\.h"|"parse-datetime-gen.h"|' \
 	      < parse-datetime.tab.c > parse-datetime.c-tmp \
-	  && sed -e 's|".*/parse-datetime\.y"|"parse-datetime.y"|' \
-	         -e 's|"parse-datetime\.tab\.h"|"parse-datetime-gen.h"|' \
-	         < parse-datetime.tab.h > parse-datetime-gen.h-tmp \
-	  && rm -f parse-datetime.tab.c parse-datetime.tab.h \
-	  && mv parse-datetime.c-tmp $(srcdir)/parse-datetime.c \
-	  && mv parse-datetime-gen.h-tmp $(srcdir)/parse-datetime-gen.h; \
+	  && rm -f parse-datetime.tab.c \
+	  && mv parse-datetime.c-tmp $(srcdir)/parse-datetime.c; \
 	}
-.PHONY: generate-parse-datetime
-# The above rule will generate files with time stamp order
-# parse-datetime.y <= parse-datetime.c <= parse-datetime-gen.h.
-parse-datetime.c: parse-datetime.y
-	@{ test -f $(srcdir)/parse-datetime.c && test ! $(srcdir)/parse-datetime.c -ot $(srcdir)/parse-datetime.y; } || $(MAKE) generate-parse-datetime
-parse-datetime-gen.h: parse-datetime.c
-	@{ test -f $(srcdir)/parse-datetime-gen.h && test ! $(srcdir)/parse-datetime-gen.h -ot $(srcdir)/parse-datetime.c; } || $(MAKE) generate-parse-datetime
 lib_SOURCES += parse-datetime.y
-BUILT_SOURCES += parse-datetime.c parse-datetime-gen.h
-MOSTLYCLEANFILES += parse-datetime.tab.c parse-datetime.tab.h parse-datetime.c-tmp parse-datetime-gen.h-tmp
-MAINTAINERCLEANFILES += parse-datetime.c parse-datetime-gen.h
-EXTRA_DIST += parse-datetime.c parse-datetime-gen.h
+BUILT_SOURCES += parse-datetime.c
+MOSTLYCLEANFILES += parse-datetime.tab.c parse-datetime.c-tmp
+MAINTAINERCLEANFILES += parse-datetime.c
+EXTRA_DIST += parse-datetime.c
 
 Include:
 "parse-datetime.h"
-- 
2.34.1

Reply via email to