finAuto - a Finite Automata Simulator
What is finAuto?
finAuto is a Web-based finite automata simulator using the PIXI.js graphics library. With this simulator, you
can:
- Build DFAs and NFAs
- Simulate them on an input word stepwise
- Convert NFAs to DFAs by the powerset construction
- Convert regular expressions to NFAs by Thompson's construction
- Convert NFAs to regular expressions by Kleene's algorithm
How do I use finAuto?
The app has three modes:
- Create mode (default)
- This allows you to build a DFA or NFA by adding states and arrows
to the canvas. Clicking on a state or arrow allows you to change its label
and whether a state is accepting or not. Arrows can take multiple symbols
by separating each letter with commas.
This simulator only implements simple NFAs - an arrow simply
labelled "ab" corresponds to a single unique symbol "ab" and not the
concatenation of a and b.
- Simulate mode (right of Create mode)
- An input word can be specified and stepped through, showing how
the current states change in the canvas automaton. Additionally, you can also convert an
NFA into a DFA. Symbols consisting of multiple letters can be accessed
with angle brackets - the symbol "ab" would be accessed through <ab> in the input word
box and is read as a single symbol.
- Regex mode (left of Create mode)
- You can either convert a given regular expression into an NFA, which will
overwrite the current automaton on the canvas, or convert the current NFA into a regular
expression which appears in the regex input box.
How does NFA computation work in finAuto?
At each step, every transition possible is taken for the input symbol, as well as any jump edges.
This creates a set of current states as a result. Current states that are the result of a possible
non-accepting path are marked in red, and those that are the result of a possible
accepting path are marked in green.
What is the regular expression syntax?
- Concatenation - ab
- Union - a|b
- Kleene star - a*
- Bracketing - (ab)
- Empty string - !
There is no other special syntax. An example regex is (1|01*0)*, representing the language of binary
strings with an even number of 0s.
This software uses the PIXI.js graphics library, which is licensed under the MIT license.
See The MIT license for details.