The Algorithm Design Manual
About the Book
Programming Challenges

The Stony Brook Algorithm Repository

Steven Skiena
Stony Brook University
Dept. of Computer Science

Grail: finite automata and regular expressions

Grail, by Darrell Raymond and Derick Wood, is a symbolic computation environment for finite-state machines, regular expressions, and other formal language theory objects. Using Grail, one can input machines or expressions, convert them from one form to the other, minimize, make deterministic, complement, and perform many other operations. Grail is intended for use in teaching, for research into the properties of machines, and for efficient computation with machines.

Grail is written in C++. It can be accessed either through a process library or through a C++ class library. It can handle machines with 100,000 states and dictionaries of 20,000 words. All code and documentation is accessible from the WWW site

Version 2.5 of Grail enables you to manipulate parameterizable finite-state machines, parameterizable regular expressions, and parameterizable finite languages. By `parameterizable', they mean that the alphabet is not restricted to the usual twenty-six letters and ten digits. Instead, all algorithms are written in a type-independent manner, so that any valid C++ base type and any user-defined type or class can define the alphabet of a finite-state machine or regular expression.

  • Download Files (local site)
  • Derick Wood's Webpage
  • Grail Webpage

    Problem Links

    Finite State Machine Minimization (9)

    This page last modified on 2008-07-10 .