3 ms·
You can use lazy_static to have global Regex and call that from a Nom function. There is no special support from Nom required. Alternatively one can build a pa
by oever 5y ago
You can use lazy_static to have global Regex and call that from a Nom function. There is no special support from Nom required.
Alternatively one can build a parser combinator library that compiles to a large Regex. That Regex would return a big Matcher, so a convenience wrapper for that would need to be made usable by a wrapper created from the same parser combinator.
- woodruffw 5y ago> Alternatively one can build a parser combinator library that compiles to a large Regex. Maybe I'm misunderstanding what you meant, but I don't think you can do this in the general case (since parser combinators can describe languages that are more complicated than/not describable within regular languages).
- DFHippie 5y agoI wrote a crate to facilitate this:* https://github.com/dfhoughton/pidgin https://github.com/dfhoughton/pidgin As it says there, you can only build non-recursive grammars this way. And the reason I wrote that crate: https://github.com/dfhoughton/two-timer https://github.com/dfhoughton/two-timer And the reason I wrote that crate: https://github.com/dfhoughton/jobrog https://github.com/dfhoughton/jobrog And having written these crates, I went back to writing Ruby for my day job. I am not a very experienced rustacean, and what skill I developed writing these things has faded, but I use the last one daily, so the regex-based parser is still working pretty well. * It's a "parser combinator library" inasmuch as it allows you to write reusable parsing rules that can be components of other rules.