MAWP is a stack-based, esoteric programming language written in 2020. Here is the list of current availible commands:
| Symbol |
Meaning |
| 0-9 |
Any subsequent numbers from 0 to 9 will be pushed as one multi-digit number. |
| " |
Any characters between a pair of " will get pushed to stack as a string. |
| + |
Pops two values off of stack. If at least one of the values is a string, pushes a string consisting of two concatenated values. Else, pushes sum of values. |
| - |
Pops two values off of stack. If one of the top two values is a string, pushes values and a 0. Else, pushes difference of values. |
| * |
Pops two values off of stack. If both of two top values of stack is string, push a 0. Else, if only one of values is a string, pushes the string repeated n times, where n is the other value. Else, push two values multiplied. |
| $ |
Pops two values off of stack. If one of the top two values is a string, pushes values and a 0. Else, push result of second value divided by the top. |
| % |
Pops two values off of stack. If one of the top two values is a string, pushes values and a 0. Else, pushes result of second value modulo top value. |
| ` |
Pops top of stack. |
| MAWP |
M,A,W,P are now 4 global variables. If the previous character before one of the variables was =, then assigns top of stack to the corresponding variable. Else, pushes the variable to stack. |
| ! |
Duplicates top of stack. |
| : |
Prints top of stack without newline, removing it. |
| ; |
If top of stack is a string, output string as sequence of ASCII codes. Else, output the corresponding ASCII character. |
| . |
Terminates program |
| [ |
Start of loop. jumps to its ] if top of stack equals to 0 |
| ] |
End of loop. If top of stack doesn't equal to 0, then moves back to start of loop. |
| ( |
Start of inverted [] loop. Jumps to its ) if top of stack doesn't equal to 0 |
| ) |
End of inverted [] loop. Jumps to its ( if top of stack equals to 0 |
|
< |
Long conditional. If top of stack doesn't equal to 0, jumps to its > |
| > |
End of long conditional |
| _ |
Pushes length of stack |
| ? |
Short conditional. If top of stack doesn't equal to 0, skips next operator. |
| | |
Pushes whole input byte by byte by its ASCII value |
| ~ |
Reverses the stack |
| { |
Long inverted conditional. If top of stack equals to 0, jumps to its } |
| } |
End of long inverted conditional |
| @ |
Pushes whole input byte by byte. If character is an integer, then push that integer. Else push a 0 |
| / |
Cycles stack clockwise |
| \ |
Cycles stack anticlockwise |