~mdw
/
anag
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Monoalphabetic match filter.
[anag]
/
anag.c
diff --git
a/anag.c
b/anag.c
index
939f6b8
..
56aa565
100644
(file)
--- a/
anag.c
+++ b/
anag.c
@@
-1,6
+1,6
@@
/* -*-c-*-
*
/* -*-c-*-
*
- * $Id: anag.c,v 1.
4 2001/02/19 19:18:50
mdw Exp $
+ * $Id: anag.c,v 1.
6 2003/09/15 02:48:54
mdw Exp $
*
* Main driver for anag
*
*
* Main driver for anag
*
@@
-29,6
+29,13
@@
/*----- Revision history --------------------------------------------------*
*
* $Log: anag.c,v $
/*----- 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.
+ *
* Revision 1.4 2001/02/19 19:18:50 mdw
* Minor big fixes to parser.
*
* Revision 1.4 2001/02/19 19:18:50 mdw
* Minor big fixes to parser.
*
@@
-85,6
+92,14
@@
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\
-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
+"\
+-regexp REGEXP matches with an (extended) regular expression\n\
+"
+#endif
+"\
\n\
These simple tests can be combined using the operators `-a', `-o' and `-n'\n\
(for `and', `or' and `not'; they may also be written `&', `|' and `!' if\n\
\n\
These simple tests can be combined using the operators `-a', `-o' and `-n'\n\
(for `and', `or' and `not'; they may also be written `&', `|' and `!' if\n\
@@
-107,7
+122,7
@@
enum {
O_HELP, O_VERSION, O_USAGE,
O_FILE,
O_AND, O_OR, O_NOT, O_LPAREN, O_RPAREN,
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_ANAG, O_SUBG, O_WILD, O_TRACK,
O_REGEXP, O_MONO,
O_EOF
};
O_EOF
};
@@
-137,6
+152,10
@@
static const struct opt opttab[] = {
{ "subgram", 1, 0, O_SUBG },
{ "wildcard", 1, 0, O_WILD },
{ "trackword", 1, 0, O_TRACK },
{ "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
/* --- End marker --- */
/* --- End marker --- */
@@
-337,6
+356,10
@@
static void p_factor(p_ctx *p, node **nn)
case O_SUBG: *nn = subgram(p->a + 1); break;
case O_WILD: *nn = wildcard(p->a + 1); break;
case O_TRACK: *nn = trackword(p->a + 1); break;
case O_SUBG: *nn = subgram(p->a + 1); break;
case O_WILD: *nn = wildcard(p->a + 1); break;
case O_TRACK: *nn = trackword(p->a + 1); break;
+#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);
default: die("syntax error near `%s': unexpected token", *p->a);
}
p_next(p);