Talk:MMP
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, andgwouldn'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
+gis an infinite loop (+increments the register to 1, and thenggoes to instruction 1, which isgitself). - 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)