A web app for simulating regular languages, including deterministic finite automata (DFA), non-deterministic finite automata (NFA), and regular expressions. It can step by step convert between these representations and check equivalence between NFAs (NFA equivalence still doesn't have a UI 😜).
- Deploy (Vercel)
- Implement the core DFA logic
- Saving and loading DFA to/from JSON
- Drawing DFA into page
- Simulating DFA from UI
- Creating DFA from UI textual (direct json)
- Basic UI (React)
- Creating DFA from UI textual (table ui)
- Turn DFA into NFA
- Simulating NFA from UI
- Creating NFA from UI textual (table ui)
- Make it so that if there are multiple transitions from one state to another, the link label is shown as a list of symbols
- Add ability to convert NFA into DFA
- Add ability to minimize DFA
- Add ability to minimally and consistently relabel DFA (equivalent DFAs get the same relabeling)
- Add ability to check equivalence of two NFAs
- Add ability to convert regex into NFA
- Add ability to convert NFA into regex
- Loading preset/saved NFAs from database (Vercel Postgres)
- Saving NFAs to database (Vercel Postgres)
- Authentication
- Make each user have their own saved NFAs
- Add ability for users to delete their saved NFAs
- Add ability to stop forces and fix DFA/NFA
- Add a small manual on specific rules allowed in regex
- Links unnaturally keep flipping around, fix that
- Add ability to pan and zoom window (will need to slightly modify the force layout)
- Add ability to compare two NFAs side by side
Likely will abandon in favour of table based UI (simpler and might be more practical anyway)
- [ ] Creating DFA/NFA from UI drag and drop
- [ ] Editing DFA/NFA from UI