Package: sloccount
Version: 2.26-2.1
Severity: wishlist
Tags: patch

attached is a patch that enhances the recognition of bison/flex source files
with .yy/.ll file name extensions and files generated from these input file.
The patch also enhances the recognition of bison/flex generated files from
.y/.l files.

-- System Information:
Debian Release: 4.0
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.24.2
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
diff -u sloccount-2.26/break_filelist sloccount-2.26-bison-flex/break_filelist
--- sloccount-2.26/break_filelist       2004-08-01 06:17:28.000000000 +0200
+++ sloccount-2.26-bison-flex/break_filelist    2008-02-20 13:27:10.000000000 
+0100
@@ -189,7 +189,9 @@
   "awk" => "awk",
   "sed" => "sed",
   "y" => "yacc",
+  "yy" => "yacc",
   "l" => "lex",
+  "ll" => "lex",
   "makefile" => "makefile",
   "sql" => "sql",
   "php" => "php", "php3" => "php", "php4" => "php", "php5" => "php",
@@ -850,6 +852,12 @@
  if (($firstline =~ [EMAIL PROTECTED],.]\\"@) &&
      $filename =~ [EMAIL PROTECTED](c|cpp|C|cxx|cc)$@) {return "not";}
 
+ # Make some more tests for Bison-generated files
+ if ($firstline =~ [EMAIL PROTECTED] Bison parser, made by GNU Bison@) {
+   print "Note: found bison-generated file $filename\n"
+       if $noisy;
+   return "auto";
+ }
 
  if (!($firstline =~ [EMAIL PROTECTED]@)) {return "";} # No script indicator 
here.
 
@@ -990,6 +998,37 @@
        return "auto";
      }
    }
+   if ($basename =~ m/\.tab\.[ch]{2}$/) {
+     $possible_bison = $file_to_examine;
+     $possible_bison =~ s/\.tab\.[ch]{2}$/\.yy/;
+     if  (-s "$possible_bison") {
+       print "Note: found bison-generated file $file_to_examine\n"
+           if $noisy;
+       return "auto";
+     }
+   }
+
+   # Flex may generate arbitraty files. Try to be a bit clever about the
+   # generated file. (Flex generates only C/C++ files - no header files.)
+   if ($basename =~ m/.c$/) {
+     $possible_flex = $file_to_examine;
+     $possible_flex =~ s/.c$/\.l/;
+     if (-s "$possible_flex") {
+       print "Note: found flex-generated file $file_to_examine\n"
+           if $noisy;
+       return "auto";
+     }
+   }
+   if ($basename =~ m/.cc$/) {
+     $possible_flex = $file_to_examine;
+     $possible_flex =~ s/.cc$/\.ll/;
+     if (-s "$possible_flex") {
+       print "Note: found flex-generated file $file_to_examine\n"
+           if $noisy;
+       return "auto";
+     }
+   }
+
 
    # If there's a corresponding ".MASTER" file, treat this file
    # as automatically-generated derivative.  This handles "exmh".

Reply via email to