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
, andg
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 theng
goes to instruction 1, which isg
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)