Skip to content
Snippets Groups Projects
README.md 3.86 KiB
Newer Older
  • Learn to ignore specific revisions
  • Algorithms Library Toolkit
    
    =====================================
    
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    ![automaton][logo]
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    What is it?
    -----------
    
    The Algorithms library toolkit (ALT) is a collection of implementations
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    of various types of automata, grammars, and other common structires along
    with mathematical implementation of algorithms over these structures.
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    Originaly developed at Faculty of Information Technology of Czech Technical
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    University in Prague. It supposed to be a reference implementation of formal
    
    algorithms as-are in papers. It's interface allows practical reuse of existing
    algorithms in form of by pipe comunicating, partially using a query language in command
    line, and partially using a GUI interface.
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    The Latest Version
    ------------------
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Details of the latest version can be found visiting our [gitlab project page][1].
    
    You can also take look at our [prebuilt Docker images][5].
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    
    
    Requirements
    ------------
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Project is pure C++ builded by `cmake`. Some tests are handled by
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    shell scripts.
    
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Build tools:
     * `cmake >= 3.7`
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * `make >= 3.9`
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * `g++ >= 6.3` or `clang++ >= 5.0` (compilation in C++17)
    
    Libraries:
     * `tclap`
     * `libxml2`
     * `readline`
    
    For GUI, you will need also the following libraries:
    
    Jan Trávníček's avatar
    Jan Trávníček committed
     * `Qt5-qtbase >= 5.7`
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * `jsoncpp`
     * `graphviz`
    
    Optional dependencies:
     * `doxygen` (for documentation generation)
     * `graphviz` (for documentation generation and automata visualizations)
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    
    Installation
    ------------
     1. Clone the repo: `git clone` or download sources of [stable release][3]
    and extract it.
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     2. Change directory and create a build folder: `cd algorithms-library && mkdir build`.
     3. Generate `CMakeLists`:
       - `../CMake/generate.py -wm` if you want to build whole project
       - or `../CMake/generate.py -wm -g cli` if you want to build cli only
    
       - or `../CMake/generate.py -wm -p alib2str` if you want to build only `alib2str` and its dependencies
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     4. Run `cmake` and build: `cmake .. && make`
     5. Install: `make install` or `make DESTDIR=./install install` for local install.
     6. Run :)
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    
    * *Optional step:* Generate documentation by executing `make doc`.
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    * *Optional step:* Run tests with `make test`
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    Documentation
    -------------
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Developer documentation can be generated using `make doc` command (requires
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    `doxygen`) and will be attached in release packages.
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Contributing
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    ------------
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    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.
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Please install `uncrustify` and `clang-format`. Then move/copy `.pre-commit`
    file to `.git/hooks/pre-commit`.
    
    
    Editor configuration for this project is provided by [editorconfig][6].
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    Licensing
    ---------
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    Please see LICENSE file.
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    Contacts
    --------
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * If you want to be informed about new code releases, bug fixes,
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    security fixes, general news and information about the ALT
    subscribe to the ?? mailing list as described under ??
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * If you want freely available support for running ALT please see the
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    resources at ??
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * If you have a concrete bug report for ALT please see the instructions
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    for bug reporting at ??
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
     * If you want to participate in actively developing ALT please
    
    subscribe to the ?? mailing list as described at ??
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    Authors
    -------
    
     * Ing. Jan Trávníček,
     * Ing. Tomáš Pecka,
     * Ing. Štěpán Plachý,
     * et. al.
    
    Jan Trávníček's avatar
    Jan Trávníček committed
    
    
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    [1]: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library
    [3]: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library/tags
    [4]: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library/forks/new
    [5]: https://gitlab.fit.cvut.cz/algorithms-library-toolkit/automata-library/container_registry
    
    [6]: https://editorconfig.org
    
    Tomáš Pecka's avatar
    Tomáš Pecka committed
    [logo]: docs/logo.png