A visual programming language that compiles to Python
Project description
Moldo
A visual programming language that compiles to Python, designed to make programming more accessible and intuitive.
Features
- XML-like syntax for easy visual representation
- Compiles to Python code
- Support for Python function imports
- Basic programming constructs (variables, functions, control flow)
- Type safety and error handling
Installation
pip install moldo
Quick Start
- Create a
.moldofile with your code:
<mblock type="print">Hello, World!</mblock>
<mblock type="input">What's your name? </mblock>
<mblock type="variable">name = input()</mblock>
<mblock type="print">f"Nice to meet you, {name}!"</mblock>
- Compile and run:
moldo compile your_file.moldo -o output.py
python output.py
Examples
Calculator Example
<!-- Import the math functions module -->
<mblock type="import">examples/math_functions.py</mblock>
<!-- Get input from user -->
<mblock type="input">Enter first number: </mblock>
<mblock type="variable">num1 = float(input())</mblock>
<mblock type="input">Enter second number: </mblock>
<mblock type="variable">num2 = float(input())</mblock>
<!-- Perform calculations -->
<mblock type="print">Addition: </mblock>
<mblock type="call">add(num1, num2)</mblock>
<mblock type="print">Subtraction: </mblock>
<mblock type="call">subtract(num1, num2)</mblock>
<mblock type="print">Multiplication: </mblock>
<mblock type="call">multiply(num1, num2)</mblock>
<mblock type="print">Division: </mblock>
<mblock type="call">divide(num1, num2)</mblock>
Temperature Converter Example
<mblock type="import">examples/temperature_utils.py</mblock>
<mblock type="print">Welcome to Temperature Converter!</mblock>
<mblock type="print">1. Convert Celsius to Fahrenheit</mblock>
<mblock type="print">2. Convert Fahrenheit to Celsius</mblock>
<mblock type="input">Enter your choice (1 or 2): </mblock>
<mblock type="variable">choice = input()</mblock>
<mblock type="variable">
if choice == "1":
print("Enter temperature in Celsius: ", end="")
celsius = float(input())
print(f"{celsius}°C is equal to ", end="")
result = temperature_utils.celsius_to_fahrenheit(celsius)
print(f"{result:.1f}°F")
elif choice == "2":
print("Enter temperature in Fahrenheit: ", end="")
fahrenheit = float(input())
print(f"{fahrenheit}°F is equal to ", end="")
result = temperature_utils.fahrenheit_to_celsius(fahrenheit)
print(f"{result:.1f}°C")
else:
print("Invalid choice! Please enter 1 or 2.")
</mblock>
Creating Custom Functions
To create functions that can be used in Moldo, use the @moldo_function decorator:
from moldo.decorators import moldo_function
@moldo_function(reference_name="add")
def add_numbers(a: float, b: float) -> float:
"""Add two numbers together."""
return a + b
Command Line Interface
The moldo command provides several options:
moldo compile <input_file> -o <output_file> # Compile Moldo code to Python
moldo run <input_file> # Compile and run Moldo code
moldo --help # Show help message
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
- Mutiibwa Grace Peter - GitHub
Acknowledgments
- ANTLR4 for the parsing infrastructure
- Python community for inspiration and tools
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file moldo-0.1.2.tar.gz.
File metadata
- Download URL: moldo-0.1.2.tar.gz
- Upload date:
- Size: 13.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2bd4fe478fa11a78e206cfd5a7faf1ae1853046bf35b63410497cfab27480c7
|
|
| MD5 |
255b3bb70b5f370acd6f57697242769e
|
|
| BLAKE2b-256 |
9eb16cedc9a2aa700ad10087be40bf3de1a2f7fa9533961d2ee74cb12cbcdc96
|
File details
Details for the file moldo-0.1.2-py3-none-any.whl.
File metadata
- Download URL: moldo-0.1.2-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a68b3a2cd198383438d534925f50aed592201c1e1d4ffe8cab4951a2e651ee06
|
|
| MD5 |
0dbeb6d737f47897c6c70c13e22df4f7
|
|
| BLAKE2b-256 |
7b0723c7c10a9eacf3514813258cc6273cc1bb51df9f876dcafd6366774cdcf8
|