Skip to content

A Regular Languages Simulator to help CS students understand and experiment with everything Regular Languages πŸ“• Includes Regular Expressions (Regexes), DFAs, NFAs, as well as functionality and UI for converting back and forth between them ♻️

Notifications You must be signed in to change notification settings

igreat/regular-languages-simulator

Repository files navigation

Regular Languages Simulator

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 😜).

TODO

  • 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)

Unlikely TODO

  • 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

About

A Regular Languages Simulator to help CS students understand and experiment with everything Regular Languages πŸ“• Includes Regular Expressions (Regexes), DFAs, NFAs, as well as functionality and UI for converting back and forth between them ♻️

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published