hello, human!

    Program Library



    Saved Programs

    No saved programs

    From your computer


    Basic Usage

    All commands are separated by comma ,

    Declare machine's initial state

    Use the initial keyword.
    Eg: initial q0 declares q0 as the initial state.

    Declare accept state

    Use the accept keyword.
    Eg: accept qa declares qa as the accept state.

    Declare reject state (optional)

    Use the reject keyword.
    Eg: reject qr declares qr as the reject state.


    A tuple consists of the following:
    1. current state
    2. read symbol (truncated to the first character)
    3. next state
    4. write symbol (truncated to the first character)
    5. direction l (or -1) means left, r (or 1) means right
    For example, the tuple Q0 a Q1 b r means: when you are at state Q0 and you encounter symbol "a" on the tape, switch to state Q1, write "b" on the tape and move right.

    Calling one machine from another

    You can create multiple machine programs and call the one machine from the other.

    1. Create a new program with the "New Program" button.
    2. Declare the machine's initial, accept/reject states and tuples according to your needs.
    3. Give that program a name e.g. IS_EVEN
    4. Now, to call IS_EVEN from another machine, use the exec command.
      For example, if you want IS_EVEN to be called when you are at state q1 and you read 0 you should use q1 0 exec IS_EVEN.

    Specifying parent machine state after child machine executed (optional)

    You can specify the parent machine state after the child machine has finished execution, depending on whether the child machine accepted or rejected.

    For example, the following command executes the machine IS_EVEN and then switches to state Qeven if IS_EVEN has accepted:
    q1 0 exec IS_EVEN Qeven

    Furthermore, the following command switches to state Qeven if IS_EVEN has accepted or Qodd or if IS_EVEN has rejected:
    q1 0 exec IS_EVEN Qeven Qodd

    If no states are specified for the accept or reject scenario, the parent machine keeps the last state of the child machine.