JFLAP

If you use JFLAP in teaching a course, feel free to add a description of it here, thanks!


JFLAP is intended to be used as a supplement to a course, along with a textbook for the course. JFLAP reinforces topics learned in the course.


Courses it has been used in include formal languages and automata theory, compilers, artificial intelligence, and discrete math.


JFLAP allows users to create and operate on automata, grammars, L-systems, and regular expressions; the term structure is used to refer to any single automaton, grammar, L-system, or regular expression. JFLAP offers the following major groups of operations to apply to structures:

  • Explore the Language of Structures - JFLAP has the ability to simulate input strings on nondeterministic automata, build parse tables and parse trees for grammars, and render successive expansions of L-systems. The automata represented in JFLAP are finite automata (FA), pushdown automata (PDA), and multitape Turing machines. The parsing algorithms in JFLAP are brute-force parsing, LL(1) parsing, and SLR(1) parsing.
  • Convert Between Equivalent Structures - A wide range of conversion abilities are available, e.g., regular expression to FA, nondeterministic FA to deterministic FA (DFA), PDA to grammar, grammar to PDA, DFA to minimized DFA, context-free grammar to Chomsky Normal Form grammar, and others.
  • Miscellaneous Analysis of Structures - JFLAP also offers a few sundry analysis tools to display properties of structures, like highlighting lambda-transitions, highlighting nondeterministic states, and determining the equivalence of two FAs.


JFLAP uses general definitions of its structures to allow it to fit with a range of textbooks. We mention some of these definitions here. Instructors might prefer to require students to use a subset of the JFLAP definition if that fits with their textbook.

  • Finite automata allow users to enter strings of length zero or greater. Instead, an instructor might want to require students to enter strings of length zero or one.
  • Pushdown automata can pop zero or more symbols from the stack in each transition. An instructor might want to require students to always pop one symbol.
  • Turing machine movements for the tape head are Right, Left, and Stay. An instructor might want to require students to use only Right and Left.


Different levels of exercises can be given to students.

  • Load a file and determine what it does. Here no modification of the JFLAP file is needed.
  • Load a file that is suppose to do X and doesn't and fix it. Here only slight modification of the JFLAP file is needed.
  • Create a JFLAP file for a language. Here the student must create the file from scratch.


Students can submit JFLAP files for grading. See Batch grading in the tutorial on how to grade multiple files more easily.