Skip to content

Earthyyy/syntaxiz

Repository files navigation


Logo

Syntaxiz

Convert your Python Abstract Syntax Tree to Assembly code

Overview    |    Built With    |    Installation    |    Roadmap    |    Contributing

Overview

Syntaxiz

This project is actually an assignment for the course "Compilation" at The National Institute of Statistics and Applied economies. This project aims to enhance user experience through the implementation of a user-friendly Drag and Drop playground. We are trying to allow the user to build an Abstract Syntax Tree easily and then convert it to Assembly code.

The convention used for the Abstract Syntax Tree is based on a simplified version of the Python AST. The AST is built using the Python AST module and then converted to a JSON object. The JSON object is then sent to the backend to be converted to Assembly code.

The project is still under development, and may be extended later to a series of other mini "Compiler" projects.

(back to top)

Built With

(back to top)

Installation

Using NPM

  1. Clone the repo
    git clone https://github.com/Earthyyy/syntaxiz
  2. Navigate to the project directory
    cd syntaxiz
  3. Install NPM packages
    npm install
  4. Run the dev server
     npm run dev
  5. Navigate to http://localhost:3000

Using Docker compose

  1. Clone the repo
    git clone https://github.com/Earthyyy/syntaxiz
  2. Navigate to the project directory
    cd syntaxiz
  3. Run the docker compose command
     docker compose up
  4. Navigate to http://localhost:3000

(back to top)

Roadmap

  • Add backend logic to convert the AST to Assembly code
  • Add a Drag and Drop Section
  • Add a tree visualization
  • Add output section
  • Add Dark Mode
  • Eliminate JS code
  • Add support to Docker
  • Add support to for statements
  • Implement AutoLayout mechanism (Optional)

(back to top)

Contributing

Embracing collaboration is what fuels the heartbeat of the open-source community. Your contributions are not just welcomed but cherished.

Should you have ideas for improvement, we invite you to fork the repository and initiate a pull request. Alternatively, feel free to open an issue, labeled 'enhancement,' to share your insights.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feat/new-feature-name)
  3. Commit your Changes (git commit -m 'feat: add some new feature')
  4. Push to the Branch (git push origin feat/new-feature-name)
  5. Open a Pull Request

(back to top)