Thrax - Release 1.2

Thrax is a toolkit for compiling grammars based on regular expressions and context-dependent rewrite rules into weighted finite-state transducers (FSTs). The FST representation uses OpenFst.


This version is known to work under Linux using g++ (≥ 4.6) and MacOS X using XCode 5. Expected to work wherever adequate POSIX (dlopen, ssize_t, basename), c99 (snprintf, strtoll, <stdint.h>), and C++11 (<ordered_set>, <ordered_map>, <forward_list>) support are available. Requires bison.

It is assumed you have OpenFst ( 1.6.0 or higher and have installed it. MAKE SURE YOU CONFIGURE OpenFst WITH THE --enable-far, --enable-pdt AND --enable-mpdt flags. Starting with OpenFst 1.6.0, you can also just use --enable-grm.


Follow the generic GNU build system instructions in ./INSTALL. We recommend configuring with --enable-static=no for faster compiles.

Configuring with --enable-bin=no gives very fast compiles, but excludes the command line utilities.

If you have GNU readline (or NetBSD readline on Mac OS X), you can also configure Thrax with the --enable-readline flag: this will enable inline editing and saving of history in thraxrewrite-tester.

Compiling with -Wall -Wno-sign-compare under g++ should give no warnings from this library.

NOTE: In some versions of Mac OS-X we have noticed a problem with configure whereby it fails to find fst.h. If this occurs, try configuring as follows:

CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure


Assuming you've installed under the default /usr/local, the GRM binaries are found on /usr/local/bin. Headers will be in /usr/local/include/thrax, and libraries in /usr/local/lib.

Auxiliary data files -- provided grammars -- are under /usr/local/share/thrax. Syntax highlighters (for vi and emacs) and other useful tools are under /usr/local/share/utils.

To use in your own programs you will need to include <thrax/thrax.h>. The compiler must support C++11 (for g++ add the flag "-std=c++0x"). Compile with '-I /usr/local/include' and link against /usr/local/lib/, /usr/local/lib/fst/ and /usr/local/lib/

The linking is, by default, dynamic so that the Fst and Arc type DSO extensions can be used correctly if desired.


If compiling under Cygwin see Damir Cavar's instructions at

This fix has been incorporated as of Thrax 1.2.3.


See for general documentation.

See ./NEWS for updates since the last release.

Topic revision: r15 - 2017-01-07 - RichardSproat
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback