]> granicus.if.org Git - graphviz/commitdiff
use Bison's api.prefix instead of name mangling in expr
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 2 Sep 2020 01:15:07 +0000 (18:15 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 8 Sep 2020 14:39:21 +0000 (07:39 -0700)
This is the equivalent of cc2cb52756f545d6863d6fd801fa23762a81704c. My original
intent was to split the changes that remove the build-time symbol mangling (the
equivalent of 9240da12ab7857975aa34279520f1f6aad113d48) into a separate commit.
However, the expression parser does a lot of messy tricks to collide with and
suppress Bison-generated macros. It was simpler to undo all of this in one go
then try to thread this convoluted needle. Related to #1806.

lib/expr/Makefile.am
lib/expr/exparse.y
lib/expr/expr.vcxproj

index d031e7bd9062a8a7335ad7cca3832cd3ffaa8c3f..5b4518ee0dc4adea976667de1e5f915e9df4a6a1 100644 (file)
@@ -51,17 +51,14 @@ exop.h: exparse.h
        echo "};" >> exop.h
 
 exparse.c: y.tab.c 
-       @SED@ "s/yy/ex/g" <y.tab.c | \
-               @SED@ "s/YY/EX/g" | \
-               @SED@ "s/fprintf/sfprintf/g" | \
+       @SED@ "s/fprintf/sfprintf/g" <y.tab.c | \
                @SED@ "s/FILE/Sfio_t/g" | \
                @SED@ "s/stderr/sfstderr/g" > exparse.c
 
 exparse.h: y.tab.h
        echo "#ifndef _EXPARSE_H" > exparse.h
        echo "#define _EXPARSE_H" >> exparse.h
-       @SED@ "s/yy/ex/g" < y.tab.h | \
-               @SED@ "s/YY/EX/g" >> exparse.h
+       cat y.tab.h >> exparse.h
        echo "#endif /* _EXPARSE_H */" >> exparse.h
 
 y.tab.c y.tab.h: y.output
index cb150ed7ad859fdfaa6a4d43a36eb379a17efe72..38e6a307f72ae2558b610640614ff1e35543ae10 100644 (file)
 
 %require "3.0"
 
+  /* By default, Bison emits a parser using symbols prefixed with "yy". Graphviz
+   * contains multiple Bison-generated parsers, so we alter this prefix to avoid
+   * symbol clashes.
+   */
+%define api.prefix {ex}
+
 %{
 
 /*
index f7c9ab1894dd30d5ae92b545116baf86fb03de96..5b4c03a1db0316beaeee677adceca23e2ba9c7c7 100644 (file)
@@ -65,8 +65,8 @@
     <Lib />
     <PreBuildEvent>
       <Command>win_bison -Wno-yacc -dy exparse.y -o exparse-intermediate.c
-sed "s/yy/ex/g" &lt; exparse-intermediate.c | sed "s/YY/EX/g" &gt; exparse.c
-sed "s/yy/ex/g" &lt; exparse-intermediate.h | sed "s/YY/EX/g" &gt; exparse.h
+copy exparse-intermediate.c exparse.c
+copy exparse-intermediate.h exparse.h
 del exparse-intermediate.c
 del exparse-intermediate.h</Command>
     </PreBuildEvent>
@@ -83,8 +83,8 @@ del exparse-intermediate.h</Command>
     <Lib />
     <PreBuildEvent>
       <Command>win_bison -Wno-yacc -dy exparse.y -o exparse-intermediate.c
-sed "s/yy/ex/g" &lt; exparse-intermediate.c | sed "s/YY/EX/g" &gt; exparse.c
-sed "s/yy/ex/g" &lt; exparse-intermediate.h | sed "s/YY/EX/g" &gt; exparse.h
+copy exparse-intermediate.c exparse.c
+copy exparse-intermediate.h exparse.h
 del exparse-intermediate.c
 del exparse-intermediate.h</Command>
     </PreBuildEvent>