From e8d74f4143e5ddb57f014bc078e6d76c2e4dc5bc Mon Sep 17 00:00:00 2001 From: kcook <kcook@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Sun, 5 Oct 2003 02:49:20 +0000 Subject: [PATCH] * gengtype-lex.l: Recognize typedef of functions without PARAMS macro. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72106 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/gengtype-lex.l | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e3201926c84a..4ec56291cea6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2003-10-04 Kelley Cook <kelleycook@wideopenwest.com> + + * gengtype-lex.l: Recognize typedef of functions without PARAMS macro. + 2003-10-04 Nathanael Nerode <neroden@gcc.gnu.org> * config/v850/v850-c.c, config/v850/v850-protos.h, config/v850/v850.c: diff --git a/gcc/gengtype-lex.l b/gcc/gengtype-lex.l index bbdf9913be48..5af585e1d2c5 100644 --- a/gcc/gengtype-lex.l +++ b/gcc/gengtype-lex.l @@ -132,6 +132,23 @@ ITYPE {IWORD}({WS}{IWORD})* do_typedef (xmemdup (namestart, namelen, namelen+1), t, &lexer_line); update_lineno (yytext, yyleng); } + +[^[:alnum:]_]typedef{WS}{ID}{WS}{ID}{WS}"(" { + char *namestart; + size_t namelen; + struct type *t; + + for (namestart = yytext + yyleng - 2; ISSPACE (*namestart); namestart--) + ; + for (namelen = 1; !ISSPACE (namestart[-namelen]); namelen++) + ; + namestart -= namelen - 1; + + t = create_scalar_type ("function type", sizeof ("function type")-1); + do_typedef (xmemdup (namestart, namelen, namelen+1), t, &lexer_line); + update_lineno (yytext, yyleng); +} + [^[:alnum:]_]typedef{WS}{ID}{WS}?"("{WS}?"*"{WS}?{ID}{WS}?")"{WS}?PARAMS { char *namestart; size_t namelen; @@ -148,6 +165,22 @@ ITYPE {IWORD}({WS}{IWORD})* update_lineno (yytext, yyleng); } +[^[:alnum:]_]typedef{WS}{ID}{WS}?"("{WS}?"*"{WS}?{ID}{WS}?")"{WS}?"(" { + char *namestart; + size_t namelen; + struct type *t; + + for (namestart = yytext + yyleng - 2; !ISIDNUM (*namestart); namestart--) + ; + for (namelen = 1; ISIDNUM (namestart[-namelen]); namelen++) + ; + namestart -= namelen - 1; + + t = create_scalar_type ("function type", sizeof ("function type")-1); + do_typedef (xmemdup (namestart, namelen, namelen+1), t, &lexer_line); + update_lineno (yytext, yyleng); +} + [^[:alnum:]_](typedef{WS})?(struct|union){WS}{ID}{WS}/"GTY" { char *tagstart; size_t taglen; -- GitLab