Alex is a Lex-like tool for generating Haskell scanners. For complete documentation, see the doc directory.
Alex is covered by a BSD-Style licence; see the licence file in
the doc
directory for details.
The sources are in the src
directory and the documentation in the doc
directory; various examples are in the examples
subdirectory.
The source code in the src
and examples
directories is intended to work
with GHC >= 7.0.
If you just want to use Alex, you can download or install (via
cabal install alex
) an
Alex release from Hackage; also note that
distributions such as the
Haskell Platform and other package
manager-based distributions provide packages for Alex. Moreover,
recent versions of cabal
will automatically install the required
version of alex
based on
build-tools
/build-tool-depends
declarations.
Read on if you want to build Alex directly from Git.
Alex is built using GHC & Cabal; so first install
GHC and
cabal-install-2.0
(or later).
Since Alex itself is implemented in terms of an Alex scanner, bootstrapping Alex is a bit tricky:
You need to have the build-tools alex
and happy
manually
installed; either via your system package manager distribution, the
Haskell Platform, or e.g. via (run this outside the Git repository!):
$ cabal install alex happy
which installs them into ${HOME}/.cabal/bin
by default (make sure
they are in your $PATH
for the next steps!).
You can install alex
simply by invoking
$ cabal install
from inside the Git folder.
Alternatively, you can use the Makefile
which automates the steps of
producing a self-contained pre-bootstrapped source distribution with
pre-generated lexer/scanners:
$ make sdist
$ cabal install dist/alex-*.tar.gz
For convenience, there is also a make sdist-test
target which builds the
source source tarball and runs the test-suite from within the source dist.
Please report any bugs or comments at https://github.com/simonmar/alex/issues
Share and enjoy,
Chris Dornan: cdornan@arm.com
Isaac Jones: ijones@syntaxpolice.org
Simon Marlow: simonmar@microsoft.com
and recent contributors.
-
John Ericson (@Ericson2314)
-
Simon Marlow (@simonmar)