Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add NPDA functionality to finsm #111

Open
wants to merge 20 commits into
base: master
Choose a base branch
from
Open

Add NPDA functionality to finsm #111

wants to merge 20 commits into from

Conversation

Necried
Copy link
Collaborator

@Necried Necried commented Aug 21, 2021

This will allow users to build, simulate and export NPDA machines on finsm.

Features include:

  • Build mode that allows users to specify their transitions as a triple consisting of the next tape input, the current stack state, and a characters to push onto the stack (must be space separated, and also allows LaTeX characters).
  • New simulation mode for NPDAs that shows a list of active configurations (consisting of current state, current stack, current tape position and an indicator on if the configuration is stuck, active, or in an accepting state). The configuration list also automatically paginates if there are more than a certain amount of configurations active. WARNING: Having too many active configurations WILL slow your browser down.
  • Export mode that will also render LaTeX in the transition label.

Design decisions:

  • A separate simulation interface for NPDAs specifically, for viewing NPDA configurations. An open question is if we should standardize tape simulation to have a separate view for DFA/NFAs as well.
  • The underlying machine type is an NPDA, but is used to represent DFAs and NFAs as well. Functions that need to differentiate on the type of machine it is operating on must have an additional parameter describing the type of the machine.

Next steps:

  • Decide if we should standardize the tape simulation to behave the same for all machine types.
  • Stress test to find out the tolerance on how many active configurations are allowed, and also to find if there are bugs in the implementation.
  • Decide if we should have a separate Bootstrap card for instantiating an initial NPDA (and it would probably be the balanced parenthesis stock example).
  • Move on to adding full-fledged Turing Machines? :)

@Necried Necried requested a review from CSchank August 21, 2021 04:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant