From 0d7ef790c0e23fcc2a7a93b3fab0b6b4cb2be373 Mon Sep 17 00:00:00 2001 From: Justin Woodring Date: Sun, 6 Feb 2022 16:32:06 -0600 Subject: [PATCH] Update README.md --- README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/README.md b/README.md index e69de29..14b4b0c 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,60 @@ +
+ +![The Logo](https://raw.githubusercontent.com/Booglejr/DFAify/main/src/main/resources/com/booglejr/dfaify/dfaify.png) + +

DFAify

+
+ +## About + +:wave: Hi there! I'm Justin Woodring! + +I built DFAify as a hobby project to allow users to model and inspect the behaviour of basic DFAs. +DFAify is a diagramming and graphical analysis tool supporting playback and stepping logic for DFAs. + +### Consider Supporting Me +If you really love DFAify consider supporting me! [:dollar: paypal.me/jwoodrg ](https://paypal.me/jwoodrg) + +## Getting Started +If you just want to use DFAify, I recommend taking a look at the releases. + +But if you're curious here's how you build from the source: +1. Install JDK 17, I recommend Adoptium's builds. +2. Clone this repo. +3. Run `./gradlew run` on Linux and Mac or `.\gradlew.bat run` on Windows +4. Done! :partying_face: + +## Writing your own DFAs +DFAs are expressed in a very simple xml format. Here's a sample: +```xml + + + + + + + + + + +``` + +Rules: +* A DFA XML documents begins with a `` and ends with a `` +* A DFA must have at least one ``. +* Each `` must be an child of the dfa root element. +* Each `` has a `name` attribute which will be displayed when they are rendered. +* Each `` has a `ref` attribute which is how you will reference other states in their connections or `` tags. + * `ref` attributes must hold unique values. +* Each `` has a `entry` attribute which is boolean flag indicating whether that state is the DFA's entry point. + * There must one and only one `entry` attribute flagged as `true` +* Each `` has a `final` attribute declaring whether that state is a final state or not. + * You can any number of final states including zero. +* Each `` tag must be a child of a state element. +* Each `` has a `to` attribute which takes the value of a `ref` attribute on a `` +* Each `` has a `takes` attribute takes a character which represents the transition character to another `` + * Each `` cannot have another sibling `` which has the same `takes` attribute. +* All attributes are not optional. + +Save this file with an `.xml` extension. And open it up in DFAify. +