Change the lexer to recognise a label in any context.  Place
before other celldata and bytestrings to avoid the initial
characters being stolen by other matches.

A label is a character sequence starting with an alphabetic
or underscore optinally followed by the same plus digits and
terminating in a colon.

The included terminating colon will prevent matching hex numbers.

Signed-off-by: Milton Miller <[EMAIL PROTECTED]>
--- 
The following patches parse matches in CELLDATA and BYTESTRING
in addition to the current INITIAL context; matches in MEMRESERVE
and INCLUDE context will not be parsed.

diff --git a/dtc-lexer.l b/dtc-lexer.l
index 77ccd54..0e356bb 100644
--- a/dtc-lexer.l
+++ b/dtc-lexer.l
@@ -107,6 +107,16 @@ #endif
                        BEGIN(INITIAL);
                        return ';';
                }
+
+<*>[a-zA-Z_][a-zA-Z0-9_]*:     {
+                       yylloc.filenum = srcpos_filenum;
+                       yylloc.first_line = yylineno;
+                       DPRINT("Label: %s\n", yytext);
+                       yylval.str = strdup(yytext);
+                       yylval.str[yyleng-1] = '\0';
+                       return DT_LABEL;
+               }
+
 <CELLDATA>[bodh]# {
                        yylloc.filenum = srcpos_filenum;
                        yylloc.first_line = yylineno;
@@ -189,15 +199,6 @@ #endif
                }
 
 
-[a-zA-Z_][a-zA-Z0-9_]*:        {
-                       yylloc.filenum = srcpos_filenum;
-                       yylloc.first_line = yylineno;
-                       DPRINT("Label: %s\n", yytext);
-                       yylval.str = strdup(yytext);
-                       yylval.str[yyleng-1] = '\0';
-                       return DT_LABEL;
-               }
-
 <*>{WS}+       /* eat whitespace */
 
 <*>"/*"([^*]|\*+[^*/])*\*+"/"  {
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to