summaryrefslogtreecommitdiff
path: root/lexcount1.c
diff options
context:
space:
mode:
authordwheeler <dwheeler@d762cc98-fd17-0410-9a0d-d09172385bc5>2006-07-07 13:36:27 +0000
committerdwheeler <dwheeler@d762cc98-fd17-0410-9a0d-d09172385bc5>2006-07-07 13:36:27 +0000
commit05095851346f52c8e918176e8e2abdf0b21de5ec (patch)
tree8de964f5eea4c7d80faf34d5d744e215a053ba8f /lexcount1.c
downloadsloccount-master.tar.gz
Initial import (sloccount 2.26)HEADmaster
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.c58
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. */
+}
+