bison-patches
[Top][All Lists]
Advanced

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

[PATCH 1/4] examples: fix annoying off-by-one errors


From: Akim Demaille
Subject: [PATCH 1/4] examples: fix annoying off-by-one errors
Date: Sun, 10 Feb 2019 16:48:51 +0100

* examples/extexi: Since we issue #lines only at the beginning of
@example, leave empty line when removing content (such as @comment
lines), otherwise the lines that follow have incorrect source line
location.  This leaves ugly empty lines, but they are removed when you
tidy the output for the end user: sequences of \n are mapped to at
most two sucessive \n.
---
 examples/extexi   | 6 +++++-
 examples/local.mk | 8 ++------
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/examples/extexi b/examples/extexi
index d50b477b..3b7d907d 100755
--- a/examples/extexi
+++ b/examples/extexi
@@ -60,7 +60,11 @@ sub normalize($)
 {
   local ($_) = @_;
 
-  s/^\@(c |comment|dots|end (ignore|group)|ignore|group).*\n//mg;
+  # If we just remove this lines, then the compiler's tracking of
+  # #lines is broken.  Leave lines that that accepted by all our tools
+  # (including flex, hence the leading space), and that will be easy
+  # to remove (see the Make examples-unline recipe).
+  s{^\@(c |comment|dots|end (ignore|group)|ignore|group).*}{ /**/}mg;
   s/address@hidden/$ENV{VERSION}/g;
   s/^\@(error|result)\{\}//mg;
   s/\@(address@hidden)/$1/g;
diff --git a/examples/local.mk b/examples/local.mk
index a35c082f..1cd60457 100644
--- a/examples/local.mk
+++ b/examples/local.mk
@@ -59,12 +59,8 @@ EXTRA_DIST += %D%/extracted.stamp
 dist-hook: examples-unline
 .PHONY: examples-unline
 examples-unline:
-       for e in $(extracted);                  \
-       do                                      \
-         e=$(distdir)/$$e;                     \
-         sed -e '/#line/d' $$e >$$e.tmp;       \
-         mv -f $$e.tmp $$e;                    \
-       done
+       cd $(distdir) && \
+         perl -pi -0777 -e 's/#line.*\n//g;s{^ /\*\*/\n}{}mg' $(extracted)
 
 
 ## ---------- ##
-- 
2.20.1




reply via email to

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