_/_/_/               _/           _/                  _/
      _/    _/             _/           _/                  _/
     _/    _/           _/_/_/       _/_/_/                _/
    _/_/_/       _/_/_/  _/   _/_/_/  _/   _/_/    _/_/   _/  _/
   _/    _/    _/   _/  _/  _/   _/  _/  _/   _/ _/      _/ _/
  _/     _/   _/   _/  _/  _/   _/  _/  _/   _/  _/_/   _/_/
 _/      _/  _/   _/  _/  _/   _/  _/  _/   _/     _/  _/  _/
_/       _/   _/_/_/  _/   _/_/_/  _/   _/_/   _/_/   _/    _/


        A Parser Generator and Scanner Generator for Gofer

                Torben Mogensen ([EMAIL PROTECTED])

Announcing Ratatosk version 0.1.

Ratatosk started as an exercise to learn to use Gofer, but grew to be
a usable system for generating parsers and scanners to use with Gofer
programs.

The parser generator generates SLR parsers from a context free syntax,
and allows semantic "actions" to be used. The generated parsers will
backtrack over shift/reduce and reduce/reduce conflicts, so non-SLR
languages can be parsed, at the cost of some extra run-time. You will,
however, get warnings about any conflicts found while generating a
parser.

The scanner generator takes a sequence of token declarations using
regular expressions and generates a DFA-based scanner suitable for use
with the generated parsers. The scanners counts line numbers for error
reporting.

The parsers generated by Ratatosk will typically be much faster than
parsers using parser combinators (20-25 times faster in some examples
we have tried). However, they will also be much larger. Another
problem is type-checking. The standard allocation of type variables
for Gofers type checking is not large enough to type-check parsers
generated by Ratatosk for medium to large grammars, so you might have
to recompile Gofer with a larger allocation of type variables.

The scanners generated by Ratatosk will usually compare reasonably
well speed-wise with simple hand-written scanners, and very well with
scanners using parser combinators. However, the scanners tend to get
big and have the same problem with type variables as the generated
parsers.

Ratatosk is available by anonymous ftp from ftp.diku.dk in the
directory pub/diku/dists, in the file Ratatosk.tar.Z. Unpack this by

        uncompress < Ratatosk.tar.Z | tar xvpf -

which creates a directory Ratatosk, containing the system.

The package contains a manual, sources for the parser generator and
scanner generator and some example files, including files for
bootstrapping the system.

Any questions and suggestions can be emailed to

        Torben Mogensen ([EMAIL PROTECTED])


Reply via email to