summaryrefslogtreecommitdiff
path: root/pascal_count.l
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 /pascal_count.l
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 'pascal_count.l')
-rw-r--r--pascal_count.l81
1 files changed, 81 insertions, 0 deletions
diff --git a/pascal_count.l b/pascal_count.l
new file mode 100644
index 0000000..cedfbb4
--- /dev/null
+++ b/pascal_count.l
@@ -0,0 +1,81 @@
+%{
+
+/*
+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 "driver.h"
+
+#define YY_NO_UNPUT
+
+/* 1 if we saw a non-comment, non-whitespace char on this line */
+int saw_char = 0;
+
+%}
+
+%option noyywrap
+
+SPACE [ \t\n\r\f]
+
+%x comment
+%x bcomment
+%x string
+
+%%
+ line_number = 1;
+ saw_char = 0;
+ BEGIN(INITIAL);
+
+[ \t\r\f] /* Do nothing */
+"(*" {BEGIN(comment);}
+\n {if (saw_char) {sloc++; saw_char=0;}; line_number++;}
+"{" {BEGIN(bcomment);}
+"'" {saw_char = 1; BEGIN(string);}
+[^ \t\r\f(\n{'][^(\n{']* {saw_char = 1;}
+. {saw_char = 1;}
+
+<comment>[^*\n]+ /* Do nothing */
+<comment>[^*\n]*\n {if (saw_char) {sloc++; saw_char=0;}; line_number++;}
+<comment>"*"+[^*)\n]* /* Do nothing */
+<comment>"*"+[^*)\n]*\n {if (saw_char) {sloc++; saw_char=0;}; line_number++;}
+<comment>"*"+")" {BEGIN(INITIAL);}
+
+<bcomment>[^}\n]+ /* Do nothing */
+<bcomment>[^}\n]*\n {if (saw_char) {sloc++; saw_char=0;}; line_number++;}
+<bcomment>"}" {BEGIN(INITIAL);}
+
+<string>[^'\n]+ {saw_char = 1;}
+<string>\n {
+ fprintf(stderr, "Warning: newline in string - file %s, line %ld\n",
+ filename, line_number);
+ if (saw_char) {sloc++; saw_char=0;};
+ BEGIN(INITIAL); /* Switch back; this at least limits damage */
+ line_number++;
+ }
+<string>'' {saw_char = 1;}
+<string>' {saw_char = 1; BEGIN(INITIAL);}
+
+%%
+
+#include "driver.c"
+
+