Alexandre Julliard : wrc:
Strip C code based on the name of the include file.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jun 28 08:08:09 CDT 2007
Module: wine
Branch: master
Commit: 549351ab09c2173d067b3a6eeee5b45bf6098ca6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=549351ab09c2173d067b3a6eeee5b45bf6098ca6
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jun 28 14:10:07 2007 +0200
wrc: Strip C code based on the name of the include file.
Get rid of the old C code stripping support that wasn't used anymore.
---
tools/wrc/parser.l | 74 +++++++++++----------------------------------------
1 files changed, 16 insertions(+), 58 deletions(-)
diff --git a/tools/wrc/parser.l b/tools/wrc/parser.l
index f9034a5..4b0a7db 100644
--- a/tools/wrc/parser.l
+++ b/tools/wrc/parser.l
@@ -76,10 +76,7 @@
/* Exclusive comment eating... */
%x comment
/* Set when stripping c-junk */
-%x pp_stripe
-%x pp_strips
-%x pp_stripp
-%x pp_stripp_final
+%x pp_cstrip
/* Set when scanning #line style directives */
%x pp_line
/* Set when scanning #pragma */
@@ -87,7 +84,7 @@
%x pp_code_page
%option stack
-%option nounput noyy_top_state
+%option nounput noyy_top_state noyywrap
%option 8bit never-interactive
%option prefix="parser_"
@@ -128,9 +125,6 @@ static int cbufalloc = 0;
static WCHAR *wbuffer;
static int wbufidx;
static int wbufalloc = 0;
-static int stripslevel = 0; /* Count {} during pp_strips/pp_stripe mode */
-static int stripplevel = 0; /* Count () during pp_strips mode */
-static int cjunk_tagline; /* Where did we start stripping (helps error tracking) */
static int current_codepage = -1; /* use language default */
@@ -321,10 +315,10 @@ static struct keyword *iskeyword(char *kw)
* because we only want to know the linenumber and
* filename.
*/
-<INITIAL,pp_strips,pp_stripp>^{ws}*\#{ws}*pragma{ws}+ yy_push_state(pp_pragma);
-<INITIAL,pp_strips,pp_stripp>^{ws}*\#{ws}* yy_push_state(pp_line);
+<INITIAL,pp_cstrip>^{ws}*\#{ws}*pragma{ws}+ yy_push_state(pp_pragma);
+<INITIAL,pp_cstrip>^{ws}*\#{ws}* yy_push_state(pp_line);
<pp_line>[^\n]* {
- int lineno;
+ int lineno, len;
char *cptr;
char *fname;
yy_pop_state();
@@ -341,6 +335,12 @@ static struct keyword *iskeyword(char *kw)
*cptr = '\0';
line_number = lineno - 1; /* We didn't read the newline */
input_name = xstrdup(fname);
+ /* ignore contents of C include files */
+ len = strlen(input_name);
+ if (len > 1 && !strcasecmp( input_name + len - 2, ".h" ))
+ BEGIN(pp_cstrip);
+ else
+ BEGIN(INITIAL);
}
<pp_pragma>code_page[^\n]* yyless(9); yy_pop_state(); yy_push_state(pp_code_page);
@@ -366,30 +366,8 @@ static struct keyword *iskeyword(char *kw)
* into account braces {} for structures,
* classes and enums.
*/
-<pp_strips>\{ stripslevel++;
-<pp_strips>\} stripslevel--;
-<pp_strips>; if(!stripslevel) yy_pop_state();
-<pp_strips>\/[^*\n] ; /* To catch comments */
-<pp_strips>[^\{\};\n#/]* ; /* Ignore rest */
-<pp_strips>\n line_number++; char_number = 1;
-
-<pp_stripp>\( stripplevel++;
-<pp_stripp>\) {
- stripplevel--;
- if(!stripplevel)
- {
- yy_pop_state();
- yy_push_state(pp_stripp_final);
- }
- }
-<pp_stripp>\/[^*\n] ; /* To catch comments */
-<pp_stripp>[^\(\);\n#/]* ; /* Ignore rest */
-<pp_stripp>\n line_number++; char_number = 1;
-
-<pp_stripp_final>{ws}* ; /* Ignore */
-<pp_stripp_final>; yy_pop_state(); /* Kill the semicolon */
-<pp_stripp_final>\n line_number++; char_number = 1; yy_pop_state();
-<pp_stripp_final>. yyless(0); yy_pop_state();
+<pp_cstrip>\n line_number++; char_number = 1;
+<pp_cstrip>. ; /* ignore */
\{ return tBEGIN;
\} return tEND;
@@ -546,7 +524,7 @@ L\" {
* Comment stripping
* Should never occur after preprocessing
*/
-<INITIAL,pp_stripp,pp_strips>"/*" {
+<INITIAL,pp_cstrip>"/*" {
yy_push_state(comment);
save_wanted_id = wanted_id;
if(!no_preprocess)
@@ -574,13 +552,6 @@ L\" {
<INITIAL>. return yytext[0];
-<<EOF>> {
- if(YY_START == pp_strips || YY_START == pp_stripe || YY_START == pp_stripp || YY_START == pp_stripp_final)
- parser_error("Unexpected end of file during c-junk scanning (started at %d)", cjunk_tagline);
- else
- yyterminate();
- }
-
<*>.|\n {
/* Catch all rule to find any unmatched text */
if(*yytext == '\n')
@@ -588,25 +559,12 @@ L\" {
line_number++;
char_number = 1;
}
- parser_warning("Unmatched text '%c' (0x%02x) YY_START=%d stripslevel=%d",
- isprint(*yytext & 0xff) ? *yytext : '.', *yytext, YY_START,stripslevel);
+ parser_warning("Unmatched text '%c' (0x%02x) YY_START=%d",
+ isprint(*yytext & 0xff) ? *yytext : '.', *yytext, YY_START);
}
%%
-#ifndef parser_wrap
-int parser_wrap(void)
-{
-#if 0
- if(bufferstackidx > 0)
- {
- return 0;
- }
-#endif
- return 1;
-}
-#endif
-
/* These dup functions copy the enclosed '\0' from
* the resource string.
*/
More information about the wine-cvs
mailing list