]> rtime.felk.cvut.cz Git - lisovros/iproute2_canprio.git/commitdiff
fix build issues with flex ver 2.5
authorBart Trojanowski <bart@jukie.net>
Mon, 19 Apr 2010 13:12:57 +0000 (09:12 -0400)
committerStephen Hemminger <stephen.hemminger@vyatta.com>
Thu, 22 Apr 2010 22:27:42 +0000 (15:27 -0700)
When building on an old environment, the flex generated
tc/emp_ematch.lex.c file would not compile.  The error given was:

emp_ematch.lex.c:1686: error: expected â\80\98\80\99, â\80\98\80\99 or â\80\98\80\99 before numeric constant

The emp_ematch.l uses 'str' as a start symbol name, and  flex would create
a '#define str 1' statement.  This particular version of flex,
unfortunately, used 'str' as names of string variables in the generated
parser functions.  This is line 1686 in the generated file:

YY_BUFFER_STATE ematch__scan_string (yyconst char * str )

This patch just substitutes 'str' for 'lexstr' in emp_ematch.l to avoid
the collision.

tc/emp_ematch.l

index 0184753aa3475870ab12441197d373ada34cd99e..d9b45be12055edb839a0c105d708644b97c4265a 100644 (file)
@@ -63,7 +63,7 @@
 
 %}
 
-%x str
+%x lexstr
 
 %option 8bit stack warn noyywrap prefix="ematch_"
 %%
                                                }
                                                strbuf_index = 0;
 
-                                               BEGIN(str);
+                                               BEGIN(lexstr);
                                        }
 
-<str>\"                                        {
+<lexstr>\"                                     {
                                                BEGIN(INITIAL);
                                                yylval.b = bstr_new(strbuf, strbuf_index);
                                                yylval.b->quoted = 1;
                                                return ATTRIBUTE;
                                        }
 
-<str>\\[0-7]{1,3}                      { /* octal escape sequence */
+<lexstr>\\[0-7]{1,3}                   { /* octal escape sequence */
                                                int res;
 
                                                sscanf(yytext + 1, "%o", &res);
                                                strbuf_append_char((unsigned char) res);
                                        }
 
-<str>\\[0-9]+                          { /* catch wrong octal escape seq. */
+<lexstr>\\[0-9]+                               { /* catch wrong octal escape seq. */
                                                fprintf(stderr, "error: invalid octale escape sequence\n");
                                                return ERROR;
                                        }
 
-<str>\\x[0-9a-fA-F]{1,2}               {
+<lexstr>\\x[0-9a-fA-F]{1,2}            {
                                                int res;
 
                                                sscanf(yytext + 2, "%x", &res);
                                                strbuf_append_char((unsigned char) res);
                                        }
 
-<str>\\n                               strbuf_append_char('\n');
-<str>\\r                               strbuf_append_char('\r');
-<str>\\t                               strbuf_append_char('\t');
-<str>\\v                               strbuf_append_char('\v');
-<str>\\b                               strbuf_append_char('\b');
-<str>\\f                               strbuf_append_char('\f');
-<str>\\a                               strbuf_append_char('\a');
+<lexstr>\\n                            strbuf_append_char('\n');
+<lexstr>\\r                            strbuf_append_char('\r');
+<lexstr>\\t                            strbuf_append_char('\t');
+<lexstr>\\v                            strbuf_append_char('\v');
+<lexstr>\\b                            strbuf_append_char('\b');
+<lexstr>\\f                            strbuf_append_char('\f');
+<lexstr>\\a                            strbuf_append_char('\a');
 
-<str>\\(.|\n)                          strbuf_append_char(yytext[1]);
-<str>[^\\\n\"]+                                strbuf_append_charp(yytext);
+<lexstr>\\(.|\n)                       strbuf_append_char(yytext[1]);
+<lexstr>[^\\\n\"]+                     strbuf_append_charp(yytext);
 
 [aA][nN][dD]                           return AND;
 [oO][rR]                               return OR;