Automata (Algorithms) Library Toolkit
=====================================

![automaton][logo]

What is it?
-----------
The automata (algorithm) library toolkit (ALT) is a mathematical implementation
of various types of automata, grammars, and other common structires along
with mathematical implementation of algorithms over these structures.
Originaly developed at Faculty of Information Technology of Czech Technical
University in Prague. It supposed to be a reference implementation of formal
algorithms as-are in papers, hence allowing practical reuse of existing
algorithms in form of by pipe comunicating tools.


The Latest Version
------------------
Details of the latest version can be found visitng our [gitlab project page][1].


Requirements
------------
Project is pure C++ builded by makefile. Some tests are handled by
shell scripts.

 * `make >= 3.9`
 * `g++ >= 4.8` or `clang++ >= 3.5`
 * `binutils-dev`
 * `libiberty-dev`
 * `libcppunit-dev`
 * `libtclap-dev`
 * `doxygen` (optional for documentation generation)
 * `graphviz` (optional for documentation generation and automata
visualizations)


Installation
------------
 1. Clone the repo: `git clone` or download sources of [stable release][3]
and extract it.
 2. Change directory and compile: `cd automata-library` and `make`.
 3. Run :)

* *Optional step:* Generate documentation by executing `make doc`.


Documentation
-------------
Developer documentation is available for generation using makefile (requires
`doxygen`) and will be attached in release packages.


Contributing
------------
Feel free to [fork][4] this project and send your merge requests there.


Developers
----------
The formatting of the code in ALT is defined by *uncrustify* configuration file
and *clang-format* configuration file in cooperation (both had some
side-effects). Every developer contributing to the project shall format the
code before making the commit. Pre-commit hook and both configuration
files are present in the repository.

Please install `uncrustify` and `clang-format`. Then move/copy `.pre-commit`
file to `.git/hooks/pre-commit`.

Vim configuration for this project is available in `.lvimrc` file and
[localvimrc][2] Vim extension is used to load this file.


Licensing
---------
Please see LICENSE file.


Contacts
--------
 * If you want to be informed about new code releases, bug fixes,
security fixes, general news and information about the ALT
subscribe to the ?? mailing list as described under ??
 * If you want freely available support for running ALT please see the
resources at ??
 * If you have a concrete bug report for ALT please see the instructions
for bug reporting at ??
 * If you want to participate in actively developing ALT please
subscribe to the ?? mailing list as described at ??

Authors
-------
 * Author 1
 * Author 2


[1]: https://gitlab.fit.cvut.cz/travnja3/automata-library.
[2]: http://www.vim.org/scripts/script.php?script_id=441
[3]: https://gitlab.fit.cvut.cz/travnja3/automata-library/tags
[4]: https://gitlab.fit.cvut.cz/travnja3/automata-library/fork/new
[logo]: docs/logo.png