Overview | Built With | Installation | Roadmap | Contributing
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.
- NextJS - For the frontend & Backend
- Tailwind CSS - For styles
- Shadcn - for UI Components
- Tanstack Query - for API calls
- React Flow - for tree visualization
- Zustand - for state management
- Clone the repo
git clone https://github.com/Earthyyy/syntaxiz
- Navigate to the project directory
cd syntaxiz
- Install NPM packages
npm install
- Run the dev server
npm run dev
- Navigate to http://localhost:3000
- Clone the repo
git clone https://github.com/Earthyyy/syntaxiz
- Navigate to the project directory
cd syntaxiz
- Run the docker compose command
docker compose up
- Navigate to http://localhost:3000
- 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)
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.
- Fork the Project
- Create your Feature Branch (
git checkout -b feat/new-feature-name
) - Commit your Changes (
git commit -m 'feat: add some new feature'
) - Push to the Branch (
git push origin feat/new-feature-name
) - Open a Pull Request