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