Monoalphabetic match filter.
[anag] / anag.c
diff --git a/anag.c b/anag.c
index 6be2a4e..56aa565 100644 (file)
--- a/anag.c
+++ b/anag.c
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: anag.c,v 1.5 2002/08/11 12:58:09 mdw Exp $
+ * $Id: anag.c,v 1.6 2003/09/15 02:48:54 mdw Exp $
  *
  * Main driver for anag
  *
@@ -29,6 +29,9 @@
 /*----- Revision history --------------------------------------------------* 
  *
  * $Log: anag.c,v $
+ * Revision 1.6  2003/09/15 02:48:54  mdw
+ * Monoalphabetic match filter.
+ *
  * Revision 1.5  2002/08/11 12:58:09  mdw
  * Added support for regular expression matching, if supported by the C
  * library.
@@ -89,6 +92,7 @@ The basic tests in the expression are:\n\
 -subgram WORD          matches words which only use letters in WORD\n\
 -wildcard PATTERN      matches with wildcards `*' and `?'\n\
 -trackword WORD                matches words which can be found in a trackword\n\
+-mono PATTERN          matches words isomorphic to the given PATTERN\n\
 "
 #ifdef HAVE_REGCOMP
 "\
@@ -118,7 +122,7 @@ enum {
   O_HELP, O_VERSION, O_USAGE,
   O_FILE,
   O_AND, O_OR, O_NOT, O_LPAREN, O_RPAREN,
-  O_ANAG, O_SUBG, O_WILD, O_TRACK, O_REGEXP,
+  O_ANAG, O_SUBG, O_WILD, O_TRACK, O_REGEXP, O_MONO,
   O_EOF
 };
 
@@ -148,6 +152,7 @@ static const struct opt opttab[] = {
   { "subgram",         1,      0,              O_SUBG },
   { "wildcard",                1,      0,              O_WILD },
   { "trackword",       1,      0,              O_TRACK },
+  { "mono",            1,      0,              O_MONO },
 #ifdef HAVE_REGCOMP
   { "regexp",          1,      0,              O_REGEXP },
 #endif
@@ -354,6 +359,7 @@ static void p_factor(p_ctx *p, node **nn)
 #ifdef HAVE_REGCOMP
       case O_REGEXP: *nn = regexp(p->a + 1); break;
 #endif
+      case O_MONO: *nn = mono(p->a + 1); break;
       default: die("syntax error near `%s': unexpected token", *p->a);
     }
     p_next(p);