Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/victorpreston/monty
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. The goal of this project is to create an interpreter for Monty ByteCodes files.
https://github.com/victorpreston/monty
alx alx-low-level-programming brainfuck c clanguage compiler cprogramming gcc interpreter monty queue stack
Last synced: about 2 months ago
JSON representation
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. The goal of this project is to create an interpreter for Monty ByteCodes files.
- Host: GitHub
- URL: https://github.com/victorpreston/monty
- Owner: victorpreston
- Created: 2024-03-29T13:07:43.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-03-30T01:32:16.000Z (10 months ago)
- Last Synced: 2024-04-17T05:01:57.836Z (9 months ago)
- Topics: alx, alx-low-level-programming, brainfuck, c, clanguage, compiler, cprogramming, gcc, interpreter, monty, queue, stack
- Language: C
- Homepage:
- Size: 30.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Learning Objectives
-------------------### General
- What do LIFO and FIFO mean
- What is a stack, and when to use it
- What is a queue, and when to use it
- What are the common implementations of stacks and queues
- What are the most common use cases of stacks and queues
- What is the proper way to use global variablesRequirements
------------### General
- 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=c90
- 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](https://github.com/holbertonschool/Betty/blob/master/betty-style.pl "betty-style.pl") and [betty-doc.pl](https://github.com/holbertonschool/Betty/blob/master/betty-doc.pl "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 projectMore Info
---------### Data structures
Please use the following data structures for this project. Don't forget to include them in your header file.
```
/**
* struct stack_s - doubly linked list representation of a stack (or queue)
* @n: integer
* @prev: points to the previous element of the stack (or queue)
* @next: points to the next element of the stack (or queue)
*
* Description: doubly linked list node structure
* for stack, queues, LIFO, FIFO
*/
typedef struct stack_s
{
int n;
struct stack_s *prev;
struct stack_s *next;
} stack_t;```
```
/**
* struct instruction_s - opcode and its function
* @opcode: the opcode
* @f: function to handle the opcode
*
* Description: opcode and its function
* for stack, queues, LIFO, FIFO
*/
typedef struct instruction_s
{
char *opcode;
void (*f)(stack_t **stack, unsigned int line_number);
} instruction_t;```
### Compilation & Output
- Your code will be compiled this way:
```
$ gcc -Wall -Werror -Wextra -pedantic -std=c90 *.c -o monty```
- Any output must be printed on `stdout`
- Any error message must be printed on `stderr`