Anssi's derivative of SFST
AFST is Anssi's code branch of the Stuttgart Finite-State Tool (SFST)
and closely related to HFST, Helsinki Finite-State Transducer Interface, that is
also developed in Helsinki.
Modifications Policy
The distributed development of AFST and HFST code branches is based on
practices that aim to keep them in sync as far as possible.
- Renamed files - When approriate, branch-specific code is
kept in a separate files that is included to the SFST code.
- Indicate stable code - Each new file contains contains
a stable and unstable block. This indicates to the other branches
the stable code portions that could be adopted to them. The
original SFST code is considered
stable. The new code of AFST is currently all unstable.
- Deprecation - If stable code of any version is not easily
fixable, it is commented out and replaced with a new code in a
stand-off file.
- Maintain presentation - The presentation (spacing
and order of definitions) is not changed if the algorithm is
otherwise correct. Presentation of the stable code is improved
only when SFST, HFST, and AFST developers agree on a cosmetic
code upgrade.
Some Features of AFST
In AFST, there are some interesting addition to SFST. It is proposed
that these will be reviewed, improved further and included to HFST and
SFST.
- Utilities for prettyprinting finite-state networks according in
various compatibility text formats that include: the matrix
representation TWOLC and the list format used by XFST. Usable as
commands "fst-tprint" and "fst-xprint". Needs further development.
- There is also a routine that produces a dot source for a nice
visualization. This routine packs similar arcs and produces nice
graphs. However, the current routine is based on slow extreme
programming code that should be optimized and prettyprinted.
- There are routines that help testing the compiler: "test" and
"draw". The first enables regression testing and parallel
comparison with other finite-state tools. The second compiles file
and produces xfig, ps, pdf, and epsi figures of transducers.
- There are a number of unstable algorithms that work in
special situations, such as when the alphabet is closed. These include
a better algorithm for asymmetric difference, a new algorithm for
the shuffle and cross-product operations and some algorithms that
manipulate auxiliary symbols.
- There are new unstable implementations of some basic operations.
The new implementations support open alphabet (with the ANY symbol
"<.>").
- The Makefile has been changed in such a way that the object code
is stored to ../obj directory.
Downloads
The following versions of AFST are downloadable:
- SFST-1.1-20080208 - the closest ancestor of AFST-20080814.tgz
- AFST-20080814.tgz - the latest development version that is still unstable
and under-documented.
Maintenance Plan
The maintenance of AFST is based on the following plans:
- AFST includes all the code of the latest SFST as long as
possible. However, AFST has a lot of additions or improved
algorithm implementations that have been merged with the SFST code
when necessary, but larger additions are kept in separate files
in order to keep the number of changes minimal.
- The development of AFST and HFST should merge. HFST is an
interface between regular expression formalisms, such as the SFST
programming language, and finite-state libraries such as the low-level
implementation classes in SFST, OpenFST by Google Research and
other similar packages such as Vaucanson. AFST contains, in addition
to its extended SFST programming language and other formalisms,
other extended parts of SFST, including extended implementation
classes. Accordingly, there is a need to make HFST also AFST
compliant. If HFST is going to include AFST extensions of SFST,
we can say that HFST and AFST have merged.