Thread: [Lxr-commits] CVS: lxr/lib/LXR/Lang Cobol.pm, 1.1, 1.2 Generic.pm, 1.19, 1.20 generic.conf, 1.19, 1
Brought to you by:
ajlittoz
From: AdrianIssott <adr...@us...> - 2009-04-11 11:23:51
|
Update of /cvsroot/lxr/lxr/lib/LXR/Lang In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv8880/lib/LXR/Lang Modified Files: Cobol.pm Generic.pm generic.conf Log Message: Fix for bug 2752690 (C / C++ pre-processor keywords aren't marked as reserved): * Updated LXR::Lang::Generic::processcode()'s pattern to allow a # to start off a keyword * LXR::Lang::processinclude() now checks for reserved words * Added isreserved() subroutine to LXR::Lang and refactored derived modules to use it (e.g. LXR::Lang::Cobol) * Added pre-processor keywords to the C and C++ lists of reserved words * Fixed Make's reserved words to be an empty list not and empty hash Index: Cobol.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang/Cobol.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Cobol.pm 10 Aug 2004 16:14:25 -0000 1.1 +++ Cobol.pm 11 Apr 2009 11:23:43 -0000 1.2 @@ -39,7 +39,7 @@ { $1. ( $2 eq "" ? $2 : - (grep(/^$2$/, $self->langinfo('reserved')) ? "<span class='reserved'>$2</span>" : + ($self->isreserved($2) ? "<span class='reserved'>$2</span>" : ( $index->issymbol($2, $$self{'release'})) ? join($2, @{$$self{'itag'}}) : Index: Generic.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang/Generic.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- Generic.pm 4 Apr 2006 22:23:44 -0000 1.19 +++ Generic.pm 11 Apr 2009 11:23:43 -0000 1.20 @@ -152,15 +152,19 @@ sub processcode { my ($self, $code) = @_; my ($start, $id); - $$code =~ s {(^|[^\w\#])([\w~][\w]*)\b} + # Replace identifier by link unless it's a reserved word - { - $1. - ( - grep(/^$2$/, $self->langinfo('reserved')) ? "<span class='reserved'>$2</span>" : - ($index->issymbol($2, $$self{'release'}) ? join($2, @{$$self{'itag'}}) : $2) - ); - }ge; + $$code =~ + s{ + (^|[^\w\#])([\w~\#][\w]*)\b + } + { + $1. + ( + $self->isreserved($2) ? "<span class='reserved'>$2</span>" : + ($index->issymbol($2, $$self{'release'}) ? join($2, @{$$self{'itag'}}) : $2) + ); + }gex; } # @@ -202,8 +206,7 @@ $string = $_; # print "considering $string\n"; - if (!grep(/^$string$/, $self->langinfo('reserved')) - && $index->issymbol($string)) + if (!$self->isreserved($string) && $index->issymbol($string)) { # print "adding $string to references\n"; Index: generic.conf =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang/generic.conf,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- generic.conf 8 Apr 2006 13:37:58 -0000 1.19 +++ generic.conf 11 Apr 2009 11:23:43 -0000 1.20 @@ -29,7 +29,9 @@ 'float', 'for', 'goto', 'if', 'int', 'long', 'register', 'return', 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', 'typedef', 'union', 'unsigned', 'void', - 'volatile', 'while', + 'volatile', 'while', '#include','#define','#ifdef', '#else', + '#elsif', '#ifndef','#endif', '#if', '#undef', '#error', + '#pragma', 'defined', ], 'spec' => [ @@ -77,7 +79,10 @@ 'typedef', 'typeid', 'typename', 'union', 'unsigned', 'using', 'virtual', 'void', 'volatile', 'wchar_t', 'while', 'xor', - 'xor_eq' + 'xor_eq', '#include', '#define', '#ifdef', + '#else', '#elsif', '#ifndef', '#endif', + '#if', '#undef', '#error', '#pragma', + 'defined', ], 'spec' => [ @@ -628,7 +633,7 @@ 'langid' => '9', }, 'Make' => { - 'reserved' => {}, + 'reserved' => [], 'spec' => [ 'comment' => ('#', "\$"), 'string' => ('"', '"'), |