myrex

Match regular expressions using NFA process networks (Elixir) (by mike-french)

Myrex Alternatives

Similar projects and alternatives to myrex

  • oil

    234 myrex VS oil

    Oils is our upgrade path from bash to a better language and runtime. It's also for Python and JavaScript users who avoid shell!

  • rebar

    22 myrex VS rebar

    A biased barometer for gauging the relative speed of some regex engines on a curated set of tasks.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • cant

    11 myrex VS cant

    A programming argot

  • dictomaton

    Finite state dictionaries in Java

  • lexer

    A batteries-included lexing library based on finite automata (by mattgreen)

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a better myrex alternative or higher similarity.

myrex reviews and mentions

Posts with mentions or reviews of myrex. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-22.
  • Re2c
    4 projects | news.ycombinator.com | 22 Feb 2024
    Concurrent parallel execution of NFA directly in Elixir:

    https://github.com/mike-french/myrex

    It is concurrent in both senses: a single match is split into many concurrent traversals of the network; multiple input strings can be matched concurrently within the same network; generators can also run concurrently in the network. It's possible because all state is in the traversal messages, not in the process nodes, and the whole thing runs asynch (non-blocking) in parallel, automatically using all cores in the machine.

    > you see how regex syntax compiles down to various configurations of automata

    That is Thompson's Construction [1]. The Myrex README contains a long description of how regex structures map to small process networks, and how they glue together. The final process network is a direct 1-1 representation of the NFA.

    [1] Russ Cox has a nice explanation https://swtch.com/~rsc/regexp/regexp1.html

  • Calculate the difference and intersection of any two regexes
    4 projects | news.ycombinator.com | 11 Sep 2023
    Another interesting question is: how many possible successful matches are there for a given input string. For example:

    How many ways can (a?){m}(a){m} match the string* a{m}

    i.e. input is m repetitions of the letter 'a'.

    https://github.com/mike-french/myrex#ambiguous-example

  • Programming Techniques: Regular expression search algorithm (1968)
    1 project | news.ycombinator.com | 12 Aug 2023
    This is Thompson's Construction.

    There is a nice description given by Russ Cox:

    https://swtch.com/~rsc/regexp/regexp1.html

    This project has an interesting implementation in Elixir, which converts the NFA directy into a process network:

    https://github.com/mike-french/myrex

    The network runs all possible traversals concurrently, and automatically scales to use all cores (Erlang BEAM runtime). Multiple input strings can also be processed concurrenty. It can also generate matching strings concurrently (Monte Carlo). It implements captures and Unicode character sets.

    While it is designed for concurrency, it is not meant to be the fastest regex implementation. There is an example of a highly ambiguous match that launches 900k traversals and reports all capture results in about 10s.

  • A note from our sponsor - SaaSHub
    www.saashub.com | 29 Apr 2024
    SaaSHub helps you find the best software and product alternatives Learn more →

Stats

Basic myrex repo stats
4
4
10.0
over 1 year ago

mike-french/myrex is an open source project licensed under GNU General Public License v3.0 or later which is an OSI approved license.

The primary programming language of myrex is Elixir.


Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com