Thread: [Lxr-commits] CVS: lxr/lib/LXR Lang.pm,1.32,1.33
Brought to you by:
ajlittoz
From: AdrianIssott <adr...@us...> - 2009-04-11 11:23:51
|
Update of /cvsroot/lxr/lxr/lib/LXR In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv8880/lib/LXR Modified Files: Lang.pm 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: Lang.pm =================================================================== RCS file: /cvsroot/lxr/lxr/lib/LXR/Lang.pm,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- Lang.pm 21 Jul 2004 20:44:30 -0000 1.32 +++ Lang.pm 11 Apr 2009 11:23:43 -0000 1.33 @@ -74,10 +74,19 @@ sub processinclude { my ($self, $frag, $dir) = @_; - $$frag =~ s#(\")(.*?)(\")# - $1.&LXR::Common::incref($2, "include", $2, $dir).$3 #e; - $$frag =~ s#(\0<)(.*?)(\0>)# - $1.&LXR::Common::incref($2, "include", $2).$3 #e; + # Replace reserved words + $$frag =~ + s{ + (^|[^\w\#])([\w~\#][\w]*)\b + } + { + $1. + ( $self->isreserved($2) ? "<span class='reserved'>$2</span>" : $2 ). + $3; + }gex; + + $$frag =~ s#(\")(.*?)(\")#$1.&LXR::Common::incref($2, "include", $2, $dir).$3 #e; + $$frag =~ s#(\0<)(.*?)(\0>)#$1.&LXR::Common::incref($2, "include", $2).$3 #e; } sub processcomment { @@ -93,4 +102,13 @@ print(STDERR ref($self), "->referencefile not implemented.\n"); } +sub isreserved { + my ($self, $frag) = @_; + + foreach my $word (@{$self->langinfo('reserved')}) { + return 1 if $frag eq $word; + } + return 0; +} + 1; |