summaryrefslogtreecommitdiff
path: root/libuxre/regdfa.h
diff options
context:
space:
mode:
authorThomas Ulmer <thomasmulmer02@gmail.com>2026-02-23 16:54:28 -0800
committerThomas Ulmer <thomasmulmer02@gmail.com>2026-02-23 16:54:28 -0800
commit15bd7946cc838a3151c357e4b0bc1ab85eecda62 (patch)
tree56977cb9bfc4349f46e2c608503a298df30ca957 /libuxre/regdfa.h
add musl and vi
Diffstat (limited to 'libuxre/regdfa.h')
-rw-r--r--libuxre/regdfa.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/libuxre/regdfa.h b/libuxre/regdfa.h
new file mode 100644
index 0000000..8cb0d48
--- /dev/null
+++ b/libuxre/regdfa.h
@@ -0,0 +1,75 @@
+/*
+ * Changes by Gunnar Ritter, Freiburg i. Br., Germany, November 2002.
+ *
+ * Sccsid @(#)regdfa.h 1.3 (gritter) 9/22/03
+ */
+/* UNIX(R) Regular Expresssion Library
+ *
+ * Note: Code is released under the GNU LGPL
+ *
+ * Copyright (C) 2001 Caldera International, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to:
+ * Free Software Foundation, Inc.
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* #include "synonyms.h" */
+
+/*
+* Deterministic Finite Automata.
+*/
+
+#ifndef LIBUXRE_REGDFA_H
+#define LIBUXRE_REGDFA_H
+
+#include <re.h>
+
+typedef struct
+{
+ Bracket *bkt; /* extra info for ROP_BKT */
+ size_t nset; /* number of items in the follow set */
+ size_t seti; /* index into the follow set strip */
+ w_type op; /* the leaf match operation */
+} Posn;
+
+#define CACHESZ 32 /* max. states to remember (must fit in uchar) */
+#define NCHAR (1 << CHAR_BIT)
+
+struct re_dfa_ /*Dfa*/
+{
+ unsigned char *posset; /* signatures built here */
+ size_t *posfoll; /* follow strip for posn[] */
+ size_t *sigfoll; /* follow strip for sigi[] */
+ size_t *cursig; /* current state's signature */
+ Posn *posn; /* important positions */
+ size_t nposn; /* length of posn,cursig,posset */
+ size_t used; /* used portion of follow strip */
+ size_t avail; /* unused part of follow strip */
+ size_t nset; /* # items nonzero in posset[] */
+ size_t nsig[CACHESZ]; /* number of items in signature */
+ size_t sigi[CACHESZ]; /* index into sigfoll[] */
+ unsigned char acc[CACHESZ]; /* nonzero for accepting states */
+ unsigned char leftmost; /* leftmost() start, not BOL */
+ unsigned char leftbol; /* leftmost() start, w/BOL */
+ unsigned char anybol; /* any match start, w/BOL */
+ unsigned char nfix; /* number of invariant states */
+ unsigned char top; /* next state index available */
+ unsigned char flags; /* interesting flags */
+ unsigned char trans[CACHESZ][NCHAR]; /* goto table */
+};
+
+extern int regtrans(Dfa *, int, w_type, int);
+
+#endif /* !LIBUXRE_REGDFA_H */