Finite Automata Learning Tools

FSM simulator

FSM simulator allows you to define your own DFA, and run the DFA step by step visually, so that you can see how a string is recognized or rejected by a DFA.

Here are the steps to run the simulator:

  1. Click here to download the FSM simulator.  It is a zip file. 
  2. Unzip the zip file


  1. Go to the directory fsmsim_bgm/classes
  2. Run the java program: >java FSM
  3. Define an FSM in a text file. You can also use an existing FSA definition in fsm-sources. You can also try to load the following automata discussed in our class:
  4. Generate the transition diagram;
  5. Run the simulator and observe how strings are recognized.

DFA applet

This tool is similar to the previous one, except that it is an applet, and you can define a DFA interactively in the GUI . You can directly run the tool in a web browser by clicking here

Once the GUI is up and running, you need to define the alphabet, the states, and the transitions in the GUI. When a DFA is defined, you can run the DFA against an input string.


JFLAP is a graphic tool to help students with concepts in grammar and  automata theory.  It can transform regular expression to NFA, NFA to DFA, and minimize DFA.  

Here are steps to run JFLAP:

  1. click here to down load the JFLAP.jar file.
  2. run the jar file by typing "java -jar JFLAP.jar"
  3. When a GUI is there, try to load an regular expression.
  4. For more information about JFLAP, you can go to the JFLAP web site.

By using this tool, you can verify whether your derivation is correct.

Note: in notation of regular expression is a little different. or is denoted by "+" instead of  " | " . Say, (a|b)*abb is represented as (a+b)*abb.

Here is more explanation from the tool's help menu:

To make expressions
for this program to work with,
type them in the field.

Adjacent symbols
imply concatenation.
No symbol is used.

Many or nothing,
Asterisk (*) is the Kleene star.
What precedes repeats.

if you want an "or" symbol
the plus (+) should be used.

Screaming nothingness,
exclamations (!) are special.
They act as lambda.

Formatting errors
will be reported to you
when you choose actions.