From 37a9456f87b6c4efd00b273f0ca2cbd8416fc5d0 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 26 Mar 2003 04:23:17 +0000 Subject: [PATCH] usnig flex directly, renaming symbols so that theres no clash with other lexers --- .cvsignore | 1 + openbox/Makefile.am | 5 ++++- openbox/cparse.l | 46 ++++++++++++++++++++++----------------------- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/.cvsignore b/.cvsignore index a285411c..63456c83 100644 --- a/.cvsignore +++ b/.cvsignore @@ -24,3 +24,4 @@ config.rpath py-compile ABOUT-NLS compile +lex.cparse.c diff --git a/openbox/Makefile.am b/openbox/Makefile.am index 14383a83..f5b67f50 100644 --- a/openbox/Makefile.am +++ b/openbox/Makefile.am @@ -27,12 +27,15 @@ openbox3_LDADD=@LIBINTL@ ../render/librender.a openbox3_LDFLAGS=-export-dynamic openbox3_SOURCES=client.c event.c extensions.c focus.c frame.c openbox.c \ prop.c screen.c stacking.c xerror.c timer.c dispatch.c \ - engine.c plugin.c action.c grab.c cparse.l config.c + engine.c plugin.c action.c grab.c lex.cparse.c config.c noinst_HEADERS=client.h event.h extensions.h focus.h frame.h geom.h gettext.h \ openbox.h prop.h screen.h stacking.h xerror.h dispatch.h \ timer.h engine.h plugin.h action.h grab.h config.h +lex.cparse.c: cparse.l + $(FLEX) -Pcparse $^ + MAINTAINERCLEANFILES= Makefile.in distclean-local: diff --git a/openbox/cparse.l b/openbox/cparse.l index fcc72f06..966fc6e4 100644 --- a/openbox/cparse.l +++ b/openbox/cparse.l @@ -2,8 +2,8 @@ #include #include "config.h" -static char *yyfilename; -static int yylineno = 1; +static char *filename; +static int lineno = 1; static gboolean haserror = FALSE; static gboolean comment = FALSE; static ConfigEntry entry = { NULL, -1 }; @@ -13,7 +13,7 @@ static void numbervalue(); static void boolvalue(); static void identifier(); static void newline(); -static int yywrap(); +static int cparsewrap(); %} number [0-9]+ @@ -25,7 +25,7 @@ bool ([tT][rR][uU][eE]|[fF][aA][lL][sS][eE]|[yY][eE][sS]|[nN][oO]|[oO][nN]|[oO][ %% -^# comment = TRUE; +^{white}# comment = TRUE; {bool}/{white}\n boolvalue(); {string}/{white}\n stringvalue(); {number}/{white}\n numbervalue(); @@ -42,12 +42,12 @@ static void stringvalue() if (!comment) { if (!haserror && entry.name != NULL && (signed)entry.type < 0) { entry.type = Config_String; - entry.value.string = g_strdup(yytext+1); /* drop the left quote */ - if (entry.value.string[yyleng-2] != '"') + entry.value.string = g_strdup(cparsetext+1); /* drop the left quote */ + if (entry.value.string[cparseleng-2] != '"') printf("warning: improperly terminated string on line %d\n", - yylineno); + lineno); else - entry.value.string[yyleng-2] = '\0'; + entry.value.string[cparseleng-2] = '\0'; } else haserror = TRUE; } @@ -58,7 +58,7 @@ static void numbervalue() if (!comment) { if (!haserror && entry.name != NULL && (signed)entry.type < 0) { entry.type = Config_Integer; - entry.value.integer = atoi(yytext); + entry.value.integer = atoi(cparsetext); } else haserror = TRUE; } @@ -69,9 +69,9 @@ static void boolvalue() if (!comment) { if (!haserror && entry.name != NULL && (signed)entry.type < 0) { entry.type = Config_Bool; - entry.value.bool = (!g_ascii_strcasecmp("true", yytext) || - !g_ascii_strcasecmp("yes", yytext) || - !g_ascii_strcasecmp("on", yytext)); + entry.value.bool = (!g_ascii_strcasecmp("true", cparsetext) || + !g_ascii_strcasecmp("yes", cparsetext) || + !g_ascii_strcasecmp("on", cparsetext)); } else haserror = TRUE; } @@ -80,7 +80,7 @@ static void boolvalue() static void identifier() { if (!comment) { - entry.name = g_strdup(yytext); + entry.name = g_strdup(cparsetext); entry.type = -1; } } @@ -90,10 +90,10 @@ static void newline() if (!comment) { if (!haserror && entry.name != NULL && (signed)entry.type >= 0) { if (!config_set(entry.name, entry.type, entry.value)) - g_warning("Parser error in '%s' on line %d\n", yyfilename, - yylineno); - } else { - g_warning("Parser error in '%s' on line %d", yyfilename, yylineno); + g_warning("Parser error in '%s' on line %d\n", filename, + lineno); + } else if (haserror || entry.name != NULL || (signed)entry.type >= 0) { + g_warning("Parser error in '%s' on line %d", filename, lineno); } g_free(entry.name); entry.name = NULL; @@ -104,10 +104,10 @@ static void newline() haserror = FALSE; } comment = FALSE; - ++yylineno; + ++lineno; } -static int yywrap() +static int cparsewrap() { g_free(entry.name); entry.name = NULL; @@ -116,9 +116,9 @@ static int yywrap() return 1; } -void cparse_go(char *filename, FILE *file) +void cparse_go(char *fname, FILE *file) { - yyfilename = filename; - yyin = file; - yylex(); + filename = fname; + cparsein = file; + cparselex(); } -- 2.39.2