cscope can't parse kernel/trace/trace_events.c (and some other files) in the linux kernel tree because this file has
#define do_for_each_event_file(tr, file) \ list_for_each_entry(tr, &ftrace_trace_arrays, list) { \ list_for_each_entry(file, &tr->events, list) #define do_for_each_event_file_safe(tr, file) \ list_for_each_entry(tr, &ftrace_trace_arrays, list) { \ struct trace_event_file *___n; \ list_for_each_entry_safe(file, ___n, &tr->events, list) #define while_for_each_event_file() \ } at the top and thus the 2nd '{' in do_for_each_event_file_safe() above is not balanced. Signed-off-by: Oleg Nesterov <o...@redhat.com> --- src/fscanner.l | 70 ++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/src/fscanner.l b/src/fscanner.l index 43880bf..46734ea 100644 --- a/src/fscanner.l +++ b/src/fscanner.l @@ -178,19 +178,21 @@ wsnl [ \t\r\v\f\n]|{comment} } \{ { /* count unmatched left braces for fcn def detection */ - ++braces; - - /* mark an untagged enum/struct/union so its beginning - can be found */ - if (tagdef) { - if (braces == 1) { - esudef = YES; + if (ppdefine == NO) { + ++braces; + + /* mark an untagged enum/struct/union so its beginning + can be found */ + if (tagdef) { + if (braces == 1) { + esudef = YES; + } + token = tagdef; + tagdef = '\0'; + last = first; + my_yymore(); + return(token); } - token = tagdef; - tagdef = '\0'; - last = first; - my_yymore(); - return(token); } goto more; /* NOTREACHED */ @@ -326,28 +328,30 @@ wsnl [ \t\r\v\f\n]|{comment} } \} { - /* could be the last enum member initializer */ - if (braces == initializerbraces) { - initializerbraces = -1; - initializer = NO; - } - if (--braces <= 0) { - endstate: - braces = 0; - classdef = NO; - } - if (braces == 0 || (braces == 1 && classdef == YES)) { - - /* if the end of an enum/struct/union definition */ - if (esudef == YES) { - esudef = NO; + if (ppdefine == NO) { + /* could be the last enum member initializer */ + if (braces == initializerbraces) { + initializerbraces = -1; + initializer = NO; } - /* if the end of the function */ - else if (fcndef == YES) { - fcndef = NO; - last = first; - my_yymore(); - return(FCNEND); + if (--braces <= 0) { + endstate: + braces = 0; + classdef = NO; + } + if (braces == 0 || (braces == 1 && classdef == YES)) { + + /* if the end of an enum/struct/union definition */ + if (esudef == YES) { + esudef = NO; + } + /* if the end of the function */ + else if (fcndef == YES) { + fcndef = NO; + last = first; + my_yymore(); + return(FCNEND); + } } } goto more; -- 2.25.1.362.g51ebf55 _______________________________________________ Cscope-devel mailing list Cscope-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/cscope-devel