An editor for deterministic finite automata
JavaScript Python CSS HTML Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
backend
site
.gitignore
Dockerfile
README.md
index.html
requirements.txt
restart.sh

README.md

Automata is an editor for deterministic and non-deterministic finite automata (DFA, NFA, NFAε). It is an open source web application aimed to help students and educators better understand and explain the concepts of computation in theoretical computer science university departments.

Try it out

Learn more about automata:

Features

  • Real-time editing of automata
  • DFA, NFA, NFAε support
  • Step-by-step computation simulation
  • Sharing automata with a simple link
  • Fully native web application in vanilla Javascript

Technology

Automata is written in HTML5 and Javascript for the client, Python for the server and Mysql for database.

Use

Configure your application and run it.

$ cd (Automata_path)
$ cp backend/config.example.py backend/config.py
$ vim backend/config.py
$ python backend/setup.py
$ cd backend && python server.py

Contributors

The Automata tool was developed at the Computer Science division of the Electrical and Computer Engineering department at the National Technical University of Athens, but is aimed at academic institutions wordwide.

Contributors:

We're looking to add several features. If you feel like contributing, just go ahead and do a pull request with your patch.

Some ideas for the future:

  • Login with Gmail to keep a list of your automata
  • Conversion from automaton to grammar and back
  • Conversion from automaton to regular expression and back
  • NFA to DFA conversion
  • Automaton minimization

Deployment

Requirements:

  • Python 2.7
  • Mysql
  • Docker (optional)

First configure your application. (Note: host should be '0.0.0.0' for Docker)

$ cd (Automata_path)
$ cp backend/config.example.py backend/config.py
$ vim backend/config.py

Then run setup.py (setup need a connected Mysql to make tables). For Docker you don't need to install python dependencies they will be installed in the container.

$ python backend/setup.py

Finally for docker lets create our container by running the restart script. This updates the code based on master and restarts the application. Anyone with docker rights in the server can run this.

$ ./restart.sh

Now you should have a running container on http://HOST:8080, redirect your web server accordingly (Nginx or Apache) and you should be up and running.

Alternative without Docker: guide for uwsgi with Nginx.

License

The Automata editor is licensed under the MIT license:

Copyright (C) 2012 Dionysis Zindros

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.