dtc: allow a label: in any dts context

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 <miltonm@bga.com>
main
Milton Miller 2007-07-07 01:18:50 -05:00 committed by Jon Loeliger
parent 46779e8f8e
commit ac6a5e26b4
1 changed files with 10 additions and 9 deletions

View File

@ -107,6 +107,16 @@ REFCHAR ({PROPCHAR}|{UNITCHAR}|[/@])
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 @@ REFCHAR ({PROPCHAR}|{UNITCHAR}|[/@])
}


[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 */

<*>"/*"([^*]|\*+[^*/])*\*+"/" {