Skip to content

Commit

Permalink
genksyms: Regenerate lexer and parser
Browse files Browse the repository at this point in the history
Regenerated the parser after "genksyms: Track changes to enum
constants".

Signed-off-by: Michal Marek <[email protected]>
Acked-by: Sam Ravnborg <[email protected]>
  • Loading branch information
michal42 committed Mar 17, 2011
1 parent e37ddb8 commit 303fc01
Show file tree
Hide file tree
Showing 3 changed files with 661 additions and 512 deletions.
30 changes: 27 additions & 3 deletions scripts/genksyms/lex.c_shipped
Original file line number Diff line number Diff line change
Expand Up @@ -2253,12 +2253,23 @@ void yyfree (void * ptr )

/* Macros to append to our phrase collection list. */

/*
* We mark any token, that that equals to a known enumerator, as
* SYM_ENUM_CONST. The parser will change this for struct and union tags later,
* the only problem is struct and union members:
* enum e { a, b }; struct s { int a, b; }
* but in this case, the only effect will be, that the ABI checksums become
* more volatile, which is acceptable. Also, such collisions are quite rare,
* so far it was only observed in include/linux/telephony.h.
*/
#define _APP(T,L) do { \
cur_node = next_node; \
next_node = xmalloc(sizeof(*next_node)); \
next_node->next = cur_node; \
cur_node->string = memcpy(xmalloc(L+1), T, L+1); \
cur_node->tag = SYM_NORMAL; \
cur_node->tag = \
find_symbol(cur_node->string, SYM_ENUM_CONST, 1)?\
SYM_ENUM_CONST : SYM_NORMAL ; \
} while (0)

#define APP _APP(yytext, yyleng)
Expand Down Expand Up @@ -2336,8 +2347,8 @@ repeat:

case STRUCT_KEYW:
case UNION_KEYW:
dont_want_brace_phrase = 3;
case ENUM_KEYW:
dont_want_brace_phrase = 3;
suppress_type_lookup = 2;
goto fini;

Expand Down Expand Up @@ -2466,7 +2477,20 @@ repeat:
++count;
APP;
goto repeat;
case ')': case ']': case '}':
case '}':
/* is this the last line of an enum declaration? */
if (count == 0)
{
/* Put back the token we just read so's we can find it again
after registering the expression. */
unput(token);

lexstate = ST_NORMAL;
token = EXPRESSION_PHRASE;
break;
}
/* FALLTHRU */
case ')': case ']':
--count;
APP;
goto repeat;
Expand Down
Loading

0 comments on commit 303fc01

Please sign in to comment.