redgrep
barre
redgrep | barre | |
---|---|---|
4 | 1 | |
150 | 12 | |
0.7% | - | |
5.8 | 0.0 | |
2 months ago | about 5 years ago | |
C++ | Rust | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
redgrep
-
Show HN: Regex Derivatives (Brzozowski Derivatives)
I don't think Rust regex engine relies on this technique. I guess the main point is when you construct the DFA directly you still have the possibility of the exponential explosion of the number of states. That's why modern engines balance between NFA/DFA and lazy DFA.
Though there is an implementation that relies only on Brzozowski derivatives: https://github.com/google/redgrep
-
Introducing: Pomsky (formerly Rulex)
redgrep did it though: https://github.com/google/redgrep
- Redgrep – grep based on regex derivatives, matches in linear time
-
Speed of Rust vs. C
It couldn't figure it out from looking through ripgrep's website: does ripgrep support intersection and complement of expressions? Like eg https://github.com/google/redgrep does.
Regular languages are closed under those operations after all.
barre
-
Speed of Rust vs. C
I've made some attempts, but nothing production grade.
About large character classes: how are those harder than in approaches? If you build any FSM you have to deal with those, don't you?
One way to handle them that works well when the characters in your classes are mostly next to each other unicode, is to express your state transition function as an 'interval map'
What I mean is that eg a hash table or an array lets you build representations of mathematical functions that map points to values.
You want something that can model a step function.
You can either roll your own, or write something around a sorted-map data structure.
Eg in C++ you'd base the whole thing around https://en.cppreference.com/w/cpp/container/map/upper_bound (or https://hackage.haskell.org/package/containers-0.4.0.0/docs/... in Haskell.)
The keys in your sorted map are the 'edges' of your characters classes (eg where they start and end).
Does that make sense? Or am I misunderstanding the problem?
> I personally always get stuck at how to handle things like captures [...]
Let me think about that one for a while. Some Googling suggests https://github.com/elfsternberg/barre though
What are some alternatives?
ixy-languages - A high-speed network driver written in C, Rust, C++, Go, C#, Java, OCaml, Haskell, Swift, Javascript, and Python
libskry_r - Lucky imaging library
smartstring - Compact inlined strings for Rust.
ripgrep - ripgrep recursively searches directories for a regex pattern while respecting your gitignore
ixy - A simple yet fast user space network driver for Intel 10 Gbit/s NICs written from scratch
fst - Represent large sets and maps compactly with finite state transducers.
CPython - The Python programming language
regex - An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.
linkify-it - Links recognition library with full unicode support
rustc_codegen_gcc - libgccjit AOT codegen for rustc