Skip to content

devharshthakur/monkey-lang

Repository files navigation

Monkey Language

monkey_lang

What’s Monkey?

Monkey has a C-like syntax, supports variable bindings, prefix and infix operators, has first-class and higher-order functions, can handle closures with ease and has integers, booleans, arrays and hashes built-in.

This project is an interpreter and compiler for the Monkey programming language, inspired by the book "Writing an Interpreter in Go" by Thorsten Ball. Unlike the original implementation in Go, this project is written in Rust and aims to provide a modern, safe, and efficient version of the Monkey language tools.

Project Goals

  • Faithfully implement the Monkey language as described in the book
  • Provide both an interpreter and a compiler
  • Leverage Rust's safety and performance features
  • Serve as a learning resource for Rust and language implementation

Setup, Running & Development

To setup the project refer SETUP file.

Progress Tracking

Project progress is now tracked in checklist.md, which contains a detailed, chapter-by-chapter checklist based on the book. This file is regularly updated to reflect completed and in-progress tasks. If you are contributing or following along, please refer to checklist.md to see the current status and next steps.

How to use the checklist:

  • Each major implementation step is listed as a checkbox.
  • Mark items as complete as you finish them.
  • Use the checklist to guide your contributions or learning.

References

  1. Writing an Interpreter in Go
  2. Monkey Language Specification
  3. The original Go codebase

Status

See checklist.md for up-to-date progress and implementation status.

Contributions and feedback are welcome! See CONTRIBUTING.md to understand how and what to contribute.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Monkey Language Interpreter and Compiler implemented in Rust

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published