commit 1ffbb49cc704cab9fe4226cc3e2ea0f95cb1b4e3 from: Sven M. Hallberg date: Wed Mar 23 19:46:12 2022 UTC comments / style commit - 433a5f454f2c22d5c78edda09ff911bd778640ff commit + 1ffbb49cc704cab9fe4226cc3e2ea0f95cb1b4e3 blob - 04799503c1900e853577c30ac417803b7d9b3b05 blob + 271ffcea40c0d6daeceae6d7df3da694ff0a19d2 --- nfa.c +++ nfa.c @@ -732,6 +732,12 @@ generate(struct prep *pr, const struct set *act, struc return -1; /* no output possible */ } +/* + * run the automaton for one iteration, either consuming input, generating + * output or failing. + * + * returns the number of input characters consumed or -1 if stuck. + */ static int nfastep(struct prep *pr, int x, struct set *act, struct set *next) { blob - 85ba26fc94f7829119ff875aa8325b4204a629cd blob + 34a70ddea66684a948f180773f4061be2d0cf89c --- nfa.h +++ nfa.h @@ -63,8 +63,8 @@ NFA star(NFA); /* running NFAs */ -typedef int sub_t(int symbol, size_t state, int, void *env); -typedef int out_t(struct range r, size_t state, int, void *env); +typedef int sub_t(int symbol, size_t state, int pos, void *env); +typedef int out_t(struct range r, size_t state, int pos, void *env); struct prep; struct prep *nfaprep(NFA, sub_t *, out_t *, void *); @@ -73,6 +73,7 @@ int nfarun(struct prep *, const char *, size_t); int nfacont(struct prep *, const char *, size_t); int nfaend(struct prep *); +/* convenience wrapper combining nfaprep, nfarun, and nfaend */ int nfamatch(NFA, sub_t *, out_t *, void *, const char *, size_t);