rxp

Crates.iorxp
lib.rsrxp
version0.2.0
sourcesrc
created_at2022-04-09 21:40:10.526355
updated_at2022-04-14 09:37:08.73339
descriptionA command-line utility to explore and test simple regular expressions
homepagehttps://github.com/drivasperez/rxp
repositoryhttps://github.com/drivasperez/rxp
max_upload_size
id564872
size267,921
Daniel Rivas (drivasperez)

documentation

README

rxp

Rxp (Regex explorer) is a command-line utility for visualising and testing simple regular expressions. It has two subcommands, dot and test.

rxp dot <phase> <regex>

rxp dot takes a simple regular expression as text input, and outputs various abstract representations of the regex at different phases of compilation. The output format is the GraphViz dot language, which can be visualised with the dot(1) utility.

Output formats:

  • rxp dot tokens <regex>: Outputs the regular expression as a stream of tokens.
  • rxp dot ast <regex>: Outputs the regular expression as an abstract syntax tree.
  • rxp dot nfa <regex>: Outputs the regular expression as an NFA (Non-deterministic finite automaton).
  • rxp dot dfa <regex>: Outputs the regular expression as a DFA (Deterministic finite automaton).

Examples:

  • rxp dot tokens '(a|b)*cde' | dot -Tpng > tokens_example.png: Example of the rxp dot tokens command

  • rxp dot ast '(a|b)*cde' | dot -Tpng > ast_example.png: Example of the rxp dot ast command

  • rxp dot nfa '(a|b)*cde' | dot -Tpng > nfa_example.png: Example of the rxp dot nfa command Arrows marked ε are epsilon transitions, or transitions which the automaton can make without consuming any input. Arrows marked with any other unicode grapheme cluster are transitions which the automaton can make by consuming a single element of its input. This might get confusing if your test string is in Greek. Sorry!

  • rxp dot dfa '(a|b)*cde' | dot -Tpng > dfa_example.png: Example of the rxp dot dfa command

rxp test <regex> <test-string>

rxp test takes a simple regular expression and a test string to evaluate against the regex. It will print true if the test string matches the regular expression and false if it does not.

Examples:

  • rxp test '(a|b)*cde' abababcde

    true
    
  • rxp test '(a|b)*cde' ohno

    false
    

If you add the --dfa flag when testing an expression, it will be compiled to a DFA before testing, which has different performance characteristics.

Commit count: 80

cargo fmt