Monty
is a scripting language that is first compiled into monty byte codes (Just like python). It relies on a unique stack, with specific instructions to manipulate it. monty
is an interpreter built specially for the Monty Bytecodes files.
This is a language that contains specific instructions to manipulate data information (stacks or queues), where each instruction (called opcode) is sended per line. Files which contains Monty byte codes usually have the .m
extension.
- Language: C
- OS: Ubuntu 14.04 LTS
- Compiler: gcc 4.8.4
- Style guidelines: Betty style
- clone the repository
git clone https://github.com/selma-belhadj/monty.git
- navigate to the repository
cd monty
To compile all files:
$ gcc -Wall -Werror -Wextra -pedantic *.c -o monty
$
The synopsis of the interpreter is the following:
$ ./monty [filename]
$
To run the interpreter:
$ ./monty file.m
2
1
0
0
3
2
1
$
monty
executes the following opcodes:
Opcode | Description |
---|---|
push |
Pushes an element to the stack |
pall |
Prints all the values on the stack |
pint |
Prints the value at the top of the stack |
pop |
Removes the top element of the stack |
swap |
Swaps the top two elements of the stack |
queue |
Sets the format of the data to a queue (FIFO) |
stack |
Sets the format of the data to a stack (LIFO) |
nop |
Doesn't do anything |
add |
Adds the top two elements of the stack |
sub |
Subtracts the top element of the stack from the second top element of the stack |
mul |
Multiplies the second top element of the stack with the top element of the stack |
div |
Divides the second top element of the stack by the top element of the stack |
mod |
Computes the rest of the division of the second top element of the stack by the top element of the stack |
pchar |
Prints the char at the top of the stack |
pstr |
Prints the string starting at the top of the stack |
rotl |
Rotates the stack to the top |
rotr |
Rotates the stack to the bottom |
Comments, indicated with #
, are not executed by the interpreter.
When a nonextistent opcode is passed, the interpreter prints an error message and stops:
$ cat errorfile.m
push 1
pint
pcx
$ ./monty errorfile.m
1
L3: unknown instruction pcx
👤 Selma Belhadj
- GitHub: @selma-belhadj
- Twitter: @Bel_Selma16
- LinkedIn: @selma-belhadj
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
Give a ⭐️ if you like this project!