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