8000 GitHub - Captain3BoOd/Syringa: An interpreter built from scratch in C++ for the new programming language Syringa
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Captain3BoOd/Syringa

Repository files navigation

Syringa Logo

💉 Syringa Language

An interpreter designed from the ground up to execute Syringa code. It also serves as an educational resource, promoting learning and encouraging contributions to the open-source Syringa ecosystem.

👀 Project Overview

Welcome to Syringa Interpreter in C++ project! This project aims to provide a robust and feature-rich interpreter for the new programming language Syringa, built entirely from scratch in C++. Whether you're looking to explore the internals of how an interpreter works, experiment with language features, this interpreter is a powerful tool designed with flexibility and extensibility in mind.

🔑 Key Features

🧠 Dynamic Typing

Syringa supports dynamic typing, allowing variables to change types at runtime. This feature provides flexibility, making it easier to write and execute dynamic code.

🗂️ Classes and Instances

Support for Object-Oriented Programming is implemented! You can define your own classes, create instances, and access attributes and methods.

Operator Overloading

The interpreter supports operator overloading, allowing you to define specific behaviors for operators like +, -, *, /, and more, within your custom classes.

Function Overloading

The interpreter supports function overloading, allowing you to define different behaviors for same function name.

📜 Execution System and Parser

The architecture of the interpreter includes a robust parser and execution system that translates Syringa code into executable operations. This allows for dynamic interpretation and real-time code execution.

♻️ Garbage Collector

To manage memory efficiently, the project includes an integrated garbage collector, based on built-in smart pointer in C++ 'std::shared_ptr', which helps prevent memory leaks by automatically freeing unused objects.

💻📚 Resources

🐞 Bugs

There are some bugs in this project such as:

  • Run-Time Error when creating nested classes or functions.
  • An infinite loop when there is an error during parsing
  • Modules, Classes, Instances.
  • Scopes bugs.
  • Some other bugs.

🛠️ Building

$ git clone https://github.com/Captain3BoOd/Syringa.git
$ cd Syringa
$ make

🚀 Future steps:

  • Set, Dict, Pointers, Byte Code, etc.
  • Static typing for variables and functions.
  • BigInt class with Karatsuba algorithm.
  • REPL mode.
  • Virtual Machine.
  • Better type checking and error handling.
  • Fixing All bugs.
  • Iterator and generator objects.
  • Inheritance.
  • New error types.
  • etc.

🤝 Contributions

This project is under continuous development, with new features being added regularly. If you’re passionate about Syringa, C++, or just interested in contributing to an exciting open-source project, feel free to jump in!

How to Contribute

  • Fork this repository.
  • Create a new branch for your feature (git checkout -b feature/NewFeature).
  • Commit your changes (git commit -m 'Add NewFeature').
  • Push to the branch (git push origin feature/NewFeature).
  • Open a Pull Request.

Any form of contribution is welcome, whether it’s code, documentation, or testing. Additionally, feel free to share this project with friends, colleagues, or within developer communities.

Releases

No releases published

Packages

No packages published

Languages

0