From: Norihiro Tanaka Date: Wed, 11 Dec 2019 20:53:09 +0000 (-0800) Subject: dfa: separate parse and compile phase X-Git-Tag: v1.0~4526 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=ac92492294ca52fe2596f6353a3fe2800052f676;p=gnulib.git dfa: separate parse and compile phase ‘dfamust’ must be called after parsing and before tokens are reordered, but both are executed in the compilation phase. Token reordering was introduced in Gnulib commit 2018-10-22T15:01:08Z!noritnk@kcn.ne.jp (5c7a0371823876cca7a1347fa09ca26bbbff0c98). * lib/dfa.c (dfaparse): Change it to global function. (dfacomp): If first argument is NULL, skip parse. * lib/dfa.h: (dfaparse): Add a prototype. --- diff --git a/ChangeLog b/ChangeLog index a5577f7c3d..f80f33b385 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2019-12-11 Norihiro Tanaka + + dfa: separate parse and compile phase + ‘dfamust’ must be called after parsing and before tokens are + reordered, but both are executed in the compilation phase. + Token reordering was introduced in Gnulib commit + 2018-10-22T15:01:08Z!noritnk@kcn.ne.jp + (5c7a0371823876cca7a1347fa09ca26bbbff0c98). + * lib/dfa.c (dfaparse): Change it to global function. + (dfacomp): If first argument is NULL, skip parse. + * lib/dfa.h: (dfaparse): Add a prototype. + 2019-12-11 Bruno Haible unistd tests: Fix link error on MSVC. diff --git a/lib/dfa.c b/lib/dfa.c index 329a2092a7..1e125b4d24 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -1969,7 +1969,7 @@ regexp (struct dfa *dfa) /* Main entry point for the parser. S is a string to be parsed, len is the length of the string, so s can include NUL characters. D is a pointer to the struct dfa to parse into. */ -static void +void dfaparse (char const *s, size_t len, struct dfa *d) { d->lex.ptr = s; @@ -3745,7 +3745,9 @@ dfassbuild (struct dfa *d) void dfacomp (char const *s, size_t len, struct dfa *d, bool searchflag) { - dfaparse (s, len, d); + if (s != NULL) + dfaparse (s, len, d); + dfassbuild (d); if (dfa_supported (d)) diff --git a/lib/dfa.h b/lib/dfa.h index 60512e2940..221f7d172a 100644 --- a/lib/dfa.h +++ b/lib/dfa.h @@ -71,6 +71,9 @@ extern struct dfamust *dfamust (struct dfa const *); /* Free the storage held by the components of a struct dfamust. */ extern void dfamustfree (struct dfamust *); +/* Parse the given string of given length into the given struct dfa. */ +extern void dfaparse (char const *, size_t, struct dfa *); + /* Compile the given string of the given length into the given struct dfa. Final argument is a flag specifying whether to build a searching or an exact matcher. */