diff options
author | dwheeler <dwheeler@d762cc98-fd17-0410-9a0d-d09172385bc5> | 2006-07-07 13:36:27 +0000 |
---|---|---|
committer | dwheeler <dwheeler@d762cc98-fd17-0410-9a0d-d09172385bc5> | 2006-07-07 13:36:27 +0000 |
commit | 05095851346f52c8e918176e8e2abdf0b21de5ec (patch) | |
tree | 8de964f5eea4c7d80faf34d5d744e215a053ba8f /lexcount1.c | |
download | sloccount-master.tar.gz |
git-svn-id: svn://svn.code.sf.net/p/sloccount/code/trunk@1 d762cc98-fd17-0410-9a0d-d09172385bc5
Diffstat (limited to 'lexcount1.c')
-rw-r--r-- | lexcount1.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lexcount1.c b/lexcount1.c new file mode 100644 index 0000000..2056b14 --- /dev/null +++ b/lexcount1.c @@ -0,0 +1,58 @@ + +/* lexcount1 - ignore C comments, count all lines with non-whitespace. */ +/* Read from stdin */ +/* Basically, this is enough machinery to count the physical SLOC for + a single file using C comments, e.g., lex. */ +/* +This is part of SLOCCount, a toolsuite that counts source lines of code (SLOC). +Copyright (C) 2001-2004 David A. Wheeler. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +To contact David A. Wheeler, see his website at: + http://www.dwheeler.com. + +*/ + +#include <stdio.h> +#include <ctype.h> + +int peek() { + int c = getchar(); + ungetc(c, stdin); + return c; +} + +int main() { + int c; + int incomment = 0; + long sloc = 0; + int nonspace = 0; + + while ( (c = getchar()) != EOF) { + if (!incomment) { + if ((c == '/') && (peek() == '*')) {incomment=1;} + else if (!isspace(c)) {nonspace = 1;} + } else { + if ((c == '*') && (peek() == '/')) { + c= getchar(); c=getchar(); incomment=0; + } + } + if ((c == '\n') && nonspace) {sloc++;} + } + printf("%ld\n", sloc); + return 0; /* Report success. */ +} + |