]> granicus.if.org Git - graphviz/commitdiff
replace ad hoc name mangling in gml scanner with Flex's option prefix
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Wed, 16 Sep 2020 00:25:26 +0000 (17:25 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 22 Sep 2020 14:44:09 +0000 (07:44 -0700)
This drops compatibility with Lex, but other scanners in the tree, e.g.
lib/cgraph/scan.l already require Flex, so this does not change build
requirements. Related to #1806.

cmake/modify_gml2gv_gmlscan.cmake.in [deleted file]
cmd/tools/CMakeLists.txt
cmd/tools/Makefile.am
cmd/tools/gml2gv.vcxproj
cmd/tools/gmlscan.l

diff --git a/cmake/modify_gml2gv_gmlscan.cmake.in b/cmake/modify_gml2gv_gmlscan.cmake.in
deleted file mode 100644 (file)
index 23f60c4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-file(READ @CMAKE_CURRENT_BINARY_DIR@/gmlscan.c file_contents)
-string(REPLACE "yy" "gml" file_contents "${file_contents}")
-file(WRITE @CMAKE_CURRENT_BINARY_DIR@/gmlscan.c "${file_contents}")
index dd88527667623f84e53bed51d222532229286447..2dbf34cfa40aa061f8a72a69c76dad069d6f4f4a 100644 (file)
@@ -106,21 +106,11 @@ configure_file(
     "${CMAKE_CURRENT_BINARY_DIR}/modify_gml2gv_gmlparse.cmake"
     @ONLY
 )
-configure_file(
-    "${TOP_SOURCE_DIR}/cmake/modify_gml2gv_gmlscan.cmake.in"
-    "${CMAKE_CURRENT_BINARY_DIR}/modify_gml2gv_gmlscan.cmake"
-    @ONLY
-)
 add_custom_command(
     OUTPUT ${BISON_Gmlparse_OUTPUTS}
     COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/modify_gml2gv_gmlparse.cmake
     APPEND
 )
-add_custom_command(
-    OUTPUT ${FLEX_Gmlscan_OUTPUTS}
-    COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/modify_gml2gv_gmlscan.cmake
-    APPEND
-)
 
 add_executable(gml2gv
     # Source files
index 381eea3e68136fe61c77fb874dbf56b4d6ac5c8d..fac0233720def88a27f8bd9ee93e500b63c6bd0c 100644 (file)
@@ -281,9 +281,7 @@ y.output: $(top_srcdir)/cmd/tools/gmlparse.y
 gmlparse.o gmlparse.lo gmlscan.o gmlscan.lo : gmlscan.c gmlparse.h
 
 gmlscan.c: $(top_srcdir)/cmd/tools/gmlscan.l
-       @LEX@ -i $(top_srcdir)/cmd/tools/gmlscan.l
-       @SED@ "s/yy/gml/g" < @LEX_OUTPUT_ROOT@.c > gmlscan.c
-       rm @LEX_OUTPUT_ROOT@.c
+       @LEX@ --outfile=$@ -i $(top_srcdir)/cmd/tools/gmlscan.l
 
 gml2gv_LDADD = \
        $(top_builddir)/lib/cgraph/libcgraph.la \
index a04d9dc49e4e46e7ade8d7938324de65555650b4..ec42ef15597616bc3bbc83f5a16f0acc8e943291 100644 (file)
@@ -72,9 +72,7 @@
       <AdditionalDependencies>getopt.lib;cdt.lib;cgraph.lib;ingraphs.lib;gvc.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     <PreBuildEvent>
-      <Command>win_flex  -o gmlscan-intermediate.c -i gmlscan.l
-sed "s/yy/gml/g" &lt; gmlscan-intermediate.c &gt; gmlscan.c
-del gmlscan-intermediate.c
+      <Command>win_flex --outfile=gmlscan.c -i gmlscan.l
 win_bison -dy gmlparse.y -o gmlparse-intermediate.c
 sed "s/yy/gml/g" &lt; gmlparse-intermediate.h &gt; gmlparse.h
 sed "s/yy/gml/g" &lt; gmlparse-intermediate.c &gt; gmlparse.c
@@ -101,9 +99,7 @@ del gmlparse-intermediate.c</Command>
       <AdditionalDependencies>getopt.lib;cdt.lib;cgraph.lib;ingraphs.lib;gvc.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     <PreBuildEvent>
-      <Command>win_flex  -o gmlscan-intermediate.c -i gmlscan.l
-sed "s/yy/gml/g" &lt; gmlscan-intermediate.c &gt; gmlscan.c
-del gmlscan-intermediate.c
+      <Command>win_flex --outfile=gmlscan.c -i gmlscan.l
 win_bison -dy gmlparse.y -o gmlparse-intermediate.c
 sed "s/yy/gml/g" &lt; gmlparse-intermediate.h &gt; gmlparse.h
 sed "s/yy/gml/g" &lt; gmlparse-intermediate.c &gt; gmlparse.c
index 4e1175d1d183578cd70819fc3722d251d4f5c78c..21588fa089eb97330b5e4d46f0dd5abbbe339b32 100644 (file)
@@ -1,5 +1,11 @@
 /* vim:set shiftwidth=4 ts=8: */
 
+  /* By default, Flex emits a lexer using symbols prefixed with "yy". Graphviz
+   * contains multiple Flex-generated lexers, so we alter this prefix to avoid
+   * symbol clashes.
+   */
+%option prefix="gml"
+
 %{
 #include <stdlib.h>
 #include <gml2gv.h>
@@ -61,7 +67,7 @@ static void addstr(char *src)
 }
 
 static void endstr(void) {
-    yylval.str = strdup(Sbuf);
+    gmllval.str = strdup(Sbuf);
 }
 
 %}
@@ -106,9 +112,9 @@ L_ID      [a-zA-Z_][_a-zA-Z0-9]*
 "fontSize"                  return (FONTSIZE);
 "fontName"                  return (FONTNAME);
 "color"                     return (COLOR);
-{L_INT}                     { yylval.str = strdup(yytext); return (INTEGER); }
-{L_REAL}                    { yylval.str = strdup(yytext); return (REAL); }
-{L_ID}                      { yylval.str = strdup(yytext); return (NAME); }
+{L_INT}                     { gmllval.str = strdup(yytext); return (INTEGER); }
+{L_REAL}                    { gmllval.str = strdup(yytext); return (REAL); }
+{L_ID}                      { gmllval.str = strdup(yytext); return (NAME); }
 ["]                         BEGIN(qstring); beginstr();
 
 <qstring>["]                BEGIN(INITIAL); endstr(); return (STRING);
@@ -118,7 +124,7 @@ L_ID      [a-zA-Z_][_a-zA-Z0-9]*
 
 %%
 
-void yyerror(char *str)
+void gmlerror(char *str)
 {
     char    buf[BUFSIZ];
     if (errors)