Metadata-Version: 2.1
Name: Peelpreter
Version: 1.0.1
Summary: A interpreter written in Python for the language, Monkey
Author: Jeebak Samajdwar
Maintainer: Jeebak Samajdwar
License: GPL
Project-URL: Repository, https://github.com/GogiBoy102/Peelpreter
Keywords: monkey,interpreter,ast,treewalker,vm,programing language,language
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development
Classifier: Topic :: Software Development :: Interpreters
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: COPYING

### Monkey
Peelpreter is a interpreter for the language Monkey specified in the book `Writing an Interpreter in Go`.
It is not not designed to be the fastest implementation but instead a (mostly) readable one. 
I, personally don't find encapsulating every little function of a program in classes to be particularly readable.
Hence, I have kept things bare-bone functions where I thought it made sense and used classes to encapsulate data like C-Structs
and sometimes to store methods.

## Monkey Features
Peelpreter supports all features of the canon implementation as well as some more.
They are:-
    1. Variables
    2. If expressions
    3. First-Class Functions
    4. Closures
    5. Array
    6. Hash Map (Dictionary)
    7. Builtin Functions
    8. Array and Hash mutability
    9. Improved `puts` function

## Features Planned to be added
Some features which I wish for in a programming language are not present yet in this.
Suppport for them will be added as soon as type annotations are improved for the existing code base.
They are:-
    1. Input function
    2. Type conversion
    3. Chaining variable assignments. E.g, `let x = y = 7`
    3. Constants
    4. Loops
    5. Structs
    6. Import System
    7. Extension modules using Python

### Installation
For installation of the package run,
```
pip install peelpreter
```
Or if you would prefer to build and install yourself, clone the repository and cd into it,
```
git clone https://github.com/GogiBoy102/Peelpreter.git
cd Peelpreter
```
then run,
```
python3 -m build
```
If `build` is not already installed onto the system then install it with,
```
pip install --upgrade build
```
After the build process end, cd into `dist` and install the tar with,
```
cd dist
pip install peelpreter-<version>.tar.gz
```
And, voila! Peelpreter has been installed! For usage, follow the next section.

### Usage
Peelpreter comes with a script called `monkey` which is the entry point for the interpreter and also the reccomended way for it to be used.

Files in monkey usually have the extension ".mon".

`monkey`, when executed with no command line arguments starts the REPL for Monkey. However, it can also execute files if the path to those files are supplied as a command line argument.
The examples directory can be looked at for example programs writen in Monkey.
```
monkey (for starting a repl)
```
```
monkey /path/to/file (for running a file)
```

### License
Peelpreter is license under the GNU General Public License version 3 or above with it also being copyrighted by `Jeebak Samajdwar`

