-
-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add fsm_detect_required_characters #492
Merged
katef
merged 6 commits into
main
from
sv/determine-which-characters-must-appear-in-input-to-match
Sep 25, 2024
Merged
Add fsm_detect_required_characters #492
katef
merged 6 commits into
main
from
sv/determine-which-characters-must-appear-in-input-to-match
Sep 25, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Most of these are used in fsm_detect_required_characters. Also add #includes for standard headers being used.
This inspects the DFA to determine which characters must appear in any matching input.
After some discussion with katef I'm converting this to a draft PR, in a moment I'll add a couple TODOs to the PR description. |
`struct bm` isn't part of the public API, so use a uint64_t[4] instead, and add an optional parameter for the count. Update the tests.
katef
reviewed
Sep 20, 2024
* prohibitively long for large/complex DFAs. */ | ||
enum fsm_detect_required_characters_res | ||
fsm_detect_required_characters(const struct fsm *dfa, size_t step_limit, | ||
uint64_t charmap[4], size_t *count) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
really nice to have this in the api, thanks
katef
approved these changes
Sep 25, 2024
katef
deleted the
sv/determine-which-characters-must-appear-in-input-to-match
branch
September 25, 2024 13:53
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This inspects the DFA to determine which characters must appear in any matching input.
Since this can be very slow for large/complex DFAs there is an optional step limit.
It walks paths between start and end states, noting character constraints from unavoidable edges with only a single label, and intersects requirements over all the paths found. It terminates early if there no constraints remaining, because further processing would not learn anything new.