A language interpreter made in the C programming language to manage stacks and queues (LIFO and FIFO). The aim is to interpret Monty bytecodes files. Monty is a language that aims to close the gap between scripting and programming languages.
- Allowed editors: vi, vim, emacs
- All your files will be compiled on Ubuntu 20.04 LTS using gcc, using the options -Wall -Werror -Wextra -pedantic -std=c89
- All your files should end with a new line
- A README.md file, at the root of the folder of the project is mandatory
- Your code should use the Betty style. It will be checked using betty-style.pl and betty-doc.pl
- You allowed to use a maximum of one global variable
- No more than 5 functions per file
- You are allowed to use the C standard library
- The prototypes of all your functions should be included in your header file called monty.h
- Don’t forget to push your header file
- All your header files should be include guarded
- You are expected to do the tasks in the order shown in the project
- Your code will be compiled this way:
$ gcc -Wall -Werror -Wextra -pedantic -std=c89 *.c -o monty
| OPCODES | WHAT THEY DO | --- | | --- | | push | add element to the 'top' of stack and 'end' of queue | pop | remove element from 'top' of stack and 'end' of queue | pall | print every member of the structure | pint | prints the member value at the top of stack | swap | swaps the order of the 1st and 2nd elements in stack | add | add top two member values | sub | subtract the top element from the 2nd top element | div | divide the 2nd element by the top element | mul | multiply the top two elements of the stack | mod | the remainder when the 2nd element is divided by the top element | comment | there is the ability to parse comments found in bytecode ->'# | pchar | print character at the top of the stack | pstr | print the character at the top of the stack | rotl | moves element at the top to the bottom of the stack | rotr | the bottom of the stack becomes the top | queue, stack | toggles the doubly link list implementation style | nop | opcode should do nothing
push 1
push 2
push 3
pall
$ ./montyfile opcodetestfile.m
3
2
1
$
$ cat opcodetestfile.m
push 1
push 2
push 3
pall
rotl
pall
$ ./montyfile opcodetestfile.m
3
2
1
2
1
3
Exits with status EXIT_FAILURE
All files have been written in the Betty Style
| --- | | --- | | Philip Favour B. | Github Email | Henry Ikegwuonu | Github Email