All Projects → wkoszek → flviz

wkoszek / flviz

Licence: BSD-2-Clause license
FLVIz - Finite Automata Simulator written in QT/Graphviz

Programming Languages

HTML
75241 projects
Roff
2310 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
XSLT
1337 projects
QMake
1090 projects

Projects that are alternatives of or similar to flviz

Jstate
Advanced state machines in Java.
Stars: ✭ 84 (+133.33%)
Mutual labels:  state-machine, finite-state-machine
StateBuilder
State machine code generator for C++ and Java.
Stars: ✭ 30 (-16.67%)
Mutual labels:  state-machine, finite-state-machine
Finity
A finite state machine library for Node.js and the browser with a friendly configuration DSL.
Stars: ✭ 88 (+144.44%)
Mutual labels:  state-machine, finite-state-machine
Fsm As Promised
A finite state machine library using ES6 promises
Stars: ✭ 446 (+1138.89%)
Mutual labels:  state-machine, finite-state-machine
Easy States
The simple, stupid state machine for Java
Stars: ✭ 167 (+363.89%)
Mutual labels:  state-machine, finite-state-machine
Hal
🔴 A non-deterministic finite-state machine for Android & JVM that won't let you down
Stars: ✭ 63 (+75%)
Mutual labels:  state-machine, finite-state-machine
Afsm
C++14 Finite State Machine library
Stars: ✭ 113 (+213.89%)
Mutual labels:  state-machine, finite-state-machine
statemachine-go
🚦 Declarative Finite-State Machines in Go
Stars: ✭ 47 (+30.56%)
Mutual labels:  state-machine, finite-state-machine
Nanostate
🚦- Small Finite State Machines
Stars: ✭ 151 (+319.44%)
Mutual labels:  state-machine, finite-state-machine
Sm
🚀 SM – a static State Machine library
Stars: ✭ 149 (+313.89%)
Mutual labels:  state-machine, finite-state-machine
Statecharts.github.io
There is no state but what we make. Feel free to pitch in.
Stars: ✭ 265 (+636.11%)
Mutual labels:  state-machine, finite-state-machine
Awesome Fsm
🤖 A curated list of awesome resources related to finite state machines and statecharts.
Stars: ✭ 189 (+425%)
Mutual labels:  state-machine, finite-state-machine
use-tiny-state-machine
A tiny (~700 bytes) react hook to help you write finite state machines
Stars: ✭ 37 (+2.78%)
Mutual labels:  state-machine, finite-state-machine
Xstateful
A wrapper for xstate that stores state, handles transitions, emits events for state changes and actions/activities, and includes an optional reducer framework for updating state and invoking side-effects
Stars: ✭ 81 (+125%)
Mutual labels:  state-machine, finite-state-machine
SimpleStateMachineLibrary
📚 A simple library for realization state machines in C# code
Stars: ✭ 30 (-16.67%)
Mutual labels:  state-machine, finite-state-machine
Hsm
Finite state machine library based on the boost hana meta programming library. It follows the principles of the boost msm and boost sml libraries, but tries to reduce own complex meta programming code to a minimum.
Stars: ✭ 106 (+194.44%)
Mutual labels:  state-machine, finite-state-machine
simple-state-machine
A simple Java state machine for Spring Boot projects
Stars: ✭ 25 (-30.56%)
Mutual labels:  state-machine, finite-state-machine
UnityHFSM
A simple yet powerful class based hierarchical finite state machine for Unity3D
Stars: ✭ 243 (+575%)
Mutual labels:  state-machine, finite-state-machine
Django Fsm
Django friendly finite state machine support
Stars: ✭ 1,898 (+5172.22%)
Mutual labels:  state-machine, finite-state-machine
Python Statemachine
Python Finite State Machines made easy.
Stars: ✭ 184 (+411.11%)
Mutual labels:  state-machine, finite-state-machine

FLVIZ - DFA simulator

Build status

FLVIZ stands for "Formal Languages Visualizer". It is a Windows GUI program which reads a configuration file, and based on its content creates a visualization of a state machine (graph), and lets you apply a stimulus (vocabulary) and see the state transitions happen dynamically.

Introduction

It was originally written in 2009 during my "Formal Languages" class which was a part of my M.Sc CS curriculum. The biggest challenge was getting it on time and making it work under Windows, since it was written in about 3 days on FreeBSD and then quickly ported. You can see what I mean if you glance at the release directory.

Created for Windows XP with SP 3 and based on QT Creator and QT4 library, it hasn't been build/used since I finished the class. In 2015 I have updated it: by using http://www.appveyor.com I converted it to Qt5 library and made it work on Windows Server 2012.

During "Formal languages" class we were provided the state machine input file. The format isn't something I designed and is very imperfect.

Requirements

  • Windows system. Originally XP, then ported to Windows Server 2012. I suspect any decent Windows version should be fine.
  • Qt Creator (tested with Qt 5.5)
  • MinGW GCC (installation as a part of Qt)
    • I haven't tested building it with Microsoft Visual C++

All libraries are present in the repo, so deployment straight after compilation should be possible.

Build instructions

For convenience, build script build.bat is present in the repository. To build, run:

build.bat

Please note this script may need to be adjusted if you end up building with anything else but Qt 5.5.

Convenience tools for AppVeyor

If you clone the repository and also decide to use Appveyor for remote testing/work, you may want to run:

gettools.bat

Which will install both Vim editor and ConEmu, which are convenience tools for development.

Data format

Data format was provided in a class. It's not great. Sample data format is as follows:

 filename   line             data
---------------------------------------------------------
data.1.txt |  1 |		5 3 2
data.1.txt |  2 |
data.1.txt |  3 |		<tablica wejsciowa ASD>
data.1.txt |  4 |		0 1 e
data.1.txt |  5 |		1 f f 2
data.1.txt |  6 |		2 3 f f
data.1.txt |  7 |		3 f f 2
data.1.txt |  8 |		4 f 5 f
data.1.txt |  9 |		5 f f f
data.1.txt | 10 |
data.1.txt | 11 |		<tablica stanow koncowych>
data.1.txt | 12 |		3 4

Empty spaces or lines don't matter. For convenience of discussion, I'm mentioning line numbers for reference below. f means empty state.

TODO: understand state indexing. My original comment stated states are indexed from 0, which I believe referred to the implementation.

Data format explanation

  • Line (1), intro:

    • 5 states
    • 3 letters in the alphabet
    • 2 end states
  • Line (3), magic pragmas:

    • <tablica wejsciowa ASD> dla automatu ASD
    • <tablica wejsciowa ASN> dla automatu ASN
    • TODO: I don't remember what these were all about.
  • Line (4):

    • Alphabet available to this program
  • Lines (5--9):

    • first column means state name, if I'm not mistaken
    • consecutive columns define transitions if one of the alphabet inputs is applied.
    • TODO: example needed. Must confirm.
  • Line (11), magic pragma:

    • List of end states.

Examples

There are some example data files in the dane folder.

Author

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].