summaryrefslogtreecommitdiff
path: root/ccl.c
diff options
context:
space:
mode:
authorVern Paxson <vern@ee.lbl.gov>1988-05-08 19:51:06 +0000
committerVern Paxson <vern@ee.lbl.gov>1988-05-08 19:51:06 +0000
commit38d7959960592775fd3c97f2db987f957a690a52 (patch)
treeff825adcb8b2349520e0026e754e8c6f2cde1f80 /ccl.c
parent06b04fbeac7a4615c816e1daadb80475dbc689f1 (diff)
Added list_character_set()
Diffstat (limited to 'ccl.c')
-rw-r--r--ccl.c54
1 files changed, 50 insertions, 4 deletions
diff --git a/ccl.c b/ccl.c
index 41e6d47..48addb3 100644
--- a/ccl.c
+++ b/ccl.c
@@ -1,9 +1,5 @@
/* ccl - routines for character classes */
-#ifndef lint
-static char rcsid[] = "@(#) $Header$ (LBL)";
-#endif
-
/*
* Copyright (c) 1987, the University of California
*
@@ -18,6 +14,11 @@ static char rcsid[] = "@(#) $Header$ (LBL)";
#include "flexdef.h"
+#ifndef lint
+static char rcsid[] =
+ "@(#) $Header$ (LBL)";
+#endif
+
/* ccladd - add a single character to a ccl
*
* synopsis
@@ -111,3 +112,48 @@ int cclp;
{
cclng[cclp] = 1;
}
+
+
+/* list_character_set - list the members of a set of characters in CCL form
+ *
+ * synopsis
+ * int cset[CSIZE + 1];
+ * list_character_set( cset );
+ *
+ * writes to stderr a character-class representation of those characters
+ * present in the given set. A character is present if it has a non-zero
+ * value in the set array.
+ */
+
+list_character_set( cset )
+int cset[];
+
+ {
+ register int i;
+ char *readable_form();
+
+ putc( '[', stderr );
+
+ for ( i = 1; i <= CSIZE; ++i )
+ {
+ if ( cset[i] )
+ {
+ register int start_char = i;
+
+ putc( ' ', stderr );
+
+ fputs( readable_form( i ), stderr );
+
+ while ( ++i <= CSIZE && cset[i] )
+ ;
+
+ if ( i - 1 > start_char )
+ /* this was a run */
+ fprintf( stderr, "-%s", readable_form( i - 1 ) );
+
+ putc( ' ', stderr );
+ }
+ }
+
+ putc( ']', stderr );
+ }