Make sure to run a version of rust above 1.63 stable, or 1.58 nightly to compile nfdeterminize, as it uses features that were flagged as experimental before then.
To get the latest version of run, download and run rustup to get rust on your local directory.
To compile after this is done, run cargo build -r
.
To run, either do:
cargo run -r -- <arguments>
target/release/nfdeterminize <arguments>
Refer to the --help
argument or the user manual in the dissertation for more help.
The directory contains extra runnable scripts, such as:
generate-test-nfa.sh
- uses GAP to generate testing NFAs for use with nfdeterminize. Provide the path to the gap executable as argument to the script in order to generate the NFAs.clean-tmp-nfas.sh
- script called bygenerate-test-nfa.sh
. Modifies and cleans temporary NFAs generated by GAP. This needs to run because of the way GAP prints items to output, in which GAP adds backslashes and endline characters every so characters. The amount of characters before the next linebreak depends on your terminal size when GAP generated and printed the NFA, and I could not find a way to remove this behaviour, hence the script.get-flamegraphs-bns.sh
- generates flamegraphs in theflamegraphs
directory for use to study the behaviour of nfdeterminize during runtime.
Some GAP scripts included in the project, that deal with automaton generation using GAP.
generate-bns.g
- Generates and prints buffer and stack TPN NFAs of size 2-2 to 3-7.generate-seqstack.g
- Generates two-stack automata of size 2-2 to 3-5.
To run benchmarks, run cargo bench
.
NOTE: Make sure to generate the GAP-generated automatons before running benchmarks (See above).