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 http://www.csd.uwo.ca/research/grail.
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.