Browse Source

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 18 years ago committed by Jon Loeliger
parent
commit
ac6a5e26b4
  1. 19
      dtc-lexer.l

19
dtc-lexer.l

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

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

Loading…
Cancel
Save