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.
+++ /dev/null
-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}")
"${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
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 \
<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" < gmlscan-intermediate.c > 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" < gmlparse-intermediate.h > gmlparse.h
sed "s/yy/gml/g" < gmlparse-intermediate.c > gmlparse.c
<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" < gmlscan-intermediate.c > 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" < gmlparse-intermediate.h > gmlparse.h
sed "s/yy/gml/g" < gmlparse-intermediate.c > gmlparse.c
/* 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>
}
static void endstr(void) {
- yylval.str = strdup(Sbuf);
+ gmllval.str = strdup(Sbuf);
}
%}
"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);
%%
-void yyerror(char *str)
+void gmlerror(char *str)
{
char buf[BUFSIZ];
if (errors)