Automata Constructor is a desktop software solution for automata editing, visualization, simulation, and analysis.
A comprehensive user guide is available in Russian in the Wiki of this repository.
- Automata types
- DFA, NFA, epsilon-NFA
- PDA, n-PDA, DPDA, n-DPDA
- Register automaton
- Mealy machine, Moore machine
- Turing Machine (TM), multi-tape TM, multi-track TM, TM with registers
- Support building blocks
- Automaton graph editing and visualization
- State and transition addition, editing, and deletion
- State moving
- Automatically laying out automaton graph
- Group selection
- Graph pane zooming and scrolling
- Undoing and redoing performed operations
- Simulation
- Instant simulation
- Step-by-state simulation
- Step-by-closure simulation
- Execution tree
- Advancing and restarting execution for individual execution states
- Freezing executions states
- Viewing execution states associated with a given state
- Transformations
- Determinization of finite automata
- Minimization of finite automata
- Conversion of regular expression to finite automata
- Elimination of epsilon-transitions
- Conversion of Mealy machine to Moore machine
- Conversion of Moore machine to Mealy machine
- Other features
- Non determinism detection
- Epsilon-transition detection
- Problem detection
- Serialization
To build this project, you must use JDK 11+.
This project uses Gradle build system. Here are commands for some of its most important tasks:
Command (Windows) | Description |
---|---|
./gradlew assemble |
Builds without tests |
./gradlew run |
Runs the application |
./gradlew test |
Runs the unit tests |
./gradlew msi |
Builds .msi installer for 64-bit Windows |
./gradlew tasks |
Displays all runnable tasks |
When running Gradle task you can specify target platform classifier with -Pplatform={classifier}
option,
the following classifiers are supported: win
, linux
, mac
, win-x86
, linux-aarch64
, mac-aarch64
.
UI: JavaFX, TornadoFX
Serialization: kotlinx.serialization
Build system: Gradle
Tests: JUnit5, MockK
The Automata Constructor is licensed under the Apache-2.0 license, as detailed in the LICENSE file.