Talk:MMP

From Esolang
Jump to navigation Jump to search

This looks like a neat language! I wanted to let you know that I've written an implementation. There are a few unspecified behaviors, so I made assumptions (these are in a comment at the top of the script as well):

  • Tape cells contain unbounded integers. This means that the program +(+) never halts (this is different from BF, in which +[+] halts because incrementing 0xFF gives 0x00). This made the most sense to me since the program space and the tape are unbounded. s, f, and g wouldn't be as useful if they could only go to places below 255!
  • Tape cells can be positive or negative. By "positions below 1 aren't assumed to exist," I assume you meant that it was undefined behavior, so my implementation does support negative tape indices.
  • All tape cells and the register start out as 0, as in BF.
  • Unrecognized commands are ignored, as in BF.
  • If control flow ever leaves the program (either through a GOTO or just through executing the last command in the program), it terminates without an error.
  • Instructions are indexed from 0 for the purposes of GOTOs. This means that the program +g is an infinite loop (+ increments the register to 1, and then g goes to instruction 1, which is g itself).
  • Bracket matching (for while loops) is preformed at runtime. This means that if the program never executes an unmatched loop, it will never error. For example, -g( halts without an error (it goes to instruction -1, which terminates the program).

The interpreter also supports the ` instruction, which dumps program information for debugging; however, it is fairly buggy itself, so be careful!

The interpreter should be suitable for writing programs (although I haven't tested it thoroughly, so it will still have bugs). Please notify me if you have any requests or comments!

Challenger5 (talk) 04:26, 2 November 2017 (UTC)