Peelpreter


NamePeelpreter JSON
Version 1.6.0 PyPI version JSON
download
home_pageNone
SummaryA interpreter written in Python for the language, Monkey
upload_time2024-06-11 17:36:07
maintainerJeebak Samajdwar
docs_urlNone
authorJeebak Samajdwar
requires_python>=3.7
licenseGPL
keywords monkey interpreter ast treewalker vm programing language language
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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 slowly added ~as soon as type annotations are improved for the existing code base~.
They are:-
~1. Input function~
~2. Type conversion~
3. Constants
4. Loops
5. Structs
6. Chaining variable assignments. E.g, `let x = y = 7`
7. Import System
8. Extension modules using Python

I might also added a Type Checker later on, but thats upto the future.

## Installation
For installation of the package run,
```
pip install peelpreter
```
Or if you would prefer to build and install yourself for a more up-to-date version, 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 ends, 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`


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "Peelpreter",
    "maintainer": "Jeebak Samajdwar",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "monkey, interpreter, ast, treewalker, vm, programing language, language",
    "author": "Jeebak Samajdwar",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/e8/f1/707f4373830680abc84cb8fdf91dfeb52bd9d7ea26e73b6b839d605c37d4/peelpreter-1.6.0.tar.gz",
    "platform": null,
    "description": "# Monkey\nPeelpreter is a interpreter for the language Monkey specified in the book `Writing an Interpreter in Go`.\nIt is not not designed to be the fastest implementation but instead a (mostly) readable one. \nI, personally don't find encapsulating every little function of a program in classes to be particularly readable.\nHence, I have kept things bare-bone functions where I thought it made sense and used classes to encapsulate data like C-Structs\nand sometimes to store methods.\n\n### Monkey Features\nPeelpreter supports all features of the canon implementation as well as some more.\nThey are:-\n1. Variables\n2. If expressions\n3. First-Class Functions\n4. Closures\n5. Array\n6. Hash Map (Dictionary)\n7. Builtin Functions\n8. Array and Hash mutability\n9. Improved `puts` function\n\n### Features Planned to be added\nSome features which I wish for in a programming language are not present yet in this.\nSuppport for them will be slowly added ~as soon as type annotations are improved for the existing code base~.\nThey are:-\n~1. Input function~\n~2. Type conversion~\n3. Constants\n4. Loops\n5. Structs\n6. Chaining variable assignments. E.g, `let x = y = 7`\n7. Import System\n8. Extension modules using Python\n\nI might also added a Type Checker later on, but thats upto the future.\n\n## Installation\nFor installation of the package run,\n```\npip install peelpreter\n```\nOr if you would prefer to build and install yourself for a more up-to-date version, clone the repository and cd into it,\n```\ngit clone https://github.com/GogiBoy102/Peelpreter.git\ncd Peelpreter\n```\nthen run,\n```\npython3 -m build\n```\nIf `build` is not already installed onto the system then install it with,\n```\npip install --upgrade build\n```\nAfter the build process ends, cd into `dist` and install the tar with,\n```\ncd dist\npip install peelpreter-<version>.tar.gz\n```\nAnd, voila! Peelpreter has been installed! For usage, follow the next section.\n\n## Usage\nPeelpreter comes with a script called `monkey` which is the entry point for the interpreter and also the reccomended way for it to be used.\n\nFiles in monkey usually have the extension \".mon\".\n\n`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.\nThe examples directory can be looked at for example programs writen in Monkey.\n```\nmonkey (for starting a repl)\n```\n```\nmonkey /path/to/file (for running a file)\n```\n\n## License\nPeelpreter is license under the GNU General Public License version 3 or above with it also being copyrighted by `Jeebak Samajdwar`\n\n",
    "bugtrack_url": null,
    "license": "GPL",
    "summary": "A interpreter written in Python for the language, Monkey",
    "version": "1.6.0",
    "project_urls": {
        "Repository": "https://github.com/GogiBoy102/Peelpreter"
    },
    "split_keywords": [
        "monkey",
        " interpreter",
        " ast",
        " treewalker",
        " vm",
        " programing language",
        " language"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e8f1707f4373830680abc84cb8fdf91dfeb52bd9d7ea26e73b6b839d605c37d4",
                "md5": "23e47aaa5a3c3cbe28b371d411db8d88",
                "sha256": "22ad2dc5b54383ddfeb1097357676cdebffd9418f211208e93beb560a3ecfbbe"
            },
            "downloads": -1,
            "filename": "peelpreter-1.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "23e47aaa5a3c3cbe28b371d411db8d88",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 28476,
            "upload_time": "2024-06-11T17:36:07",
            "upload_time_iso_8601": "2024-06-11T17:36:07.581080Z",
            "url": "https://files.pythonhosted.org/packages/e8/f1/707f4373830680abc84cb8fdf91dfeb52bd9d7ea26e73b6b839d605c37d4/peelpreter-1.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-11 17:36:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "GogiBoy102",
    "github_project": "Peelpreter",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "peelpreter"
}
        
Elapsed time: 0.25932s