Account for multi-dfa case with ANCHORED_DELAY

Specifically, we must set build_context::floatingMinLiteralMatchOffset
to 1 when thew anchored table contains multiple DFAs, as they can
produce unordered matches.

This check was already been done, but too late to affect the generation
of ANCHORED_DELAY instructions.
This commit is contained in:
Justin Viiret
2016-01-14 10:24:19 +11:00
committed by Matthew Barr
parent d7c8ffc7fd
commit 69682ed263
3 changed files with 21 additions and 15 deletions

View File

@@ -51,7 +51,12 @@ aligned_unique_ptr<anchored_matcher_info>
buildAnchoredAutomataMatcher(RoseBuildImpl &build, size_t *asize);
u32 anchoredStateSize(const anchored_matcher_info *atable);
bool anchoredIsMulti(const RoseEngine &engine);
/**
* \brief True if there is an anchored matcher and it consists of multiple
* DFAs.
*/
bool anchoredIsMulti(const anchored_matcher_info *atable);
#define ANCHORED_FAIL 0
#define ANCHORED_SUCCESS 1