Pyfdev transpiler and CLI
Project description
Pyfdev
Pyfdev is a minimal, statically‑typed subset of Python that compiles to C via Tiny C Compiler (TCC). It offers Python‑like syntax with the performance of native C, right out of the box.
🚀 Features Implemented So Far
Basic Types & Declarations
num→int(e.g.num x = 5)real→double(e.g.real pi = 3.14)text→char*(e.g.text msg = "hello")yesno→bool(e.g.yesno flag = true)list→ homogeneous arrays + length (e.g.list nums = [1,2,3]orlist words = ["a","b"])
Arithmetic & Boolean Expressions
- Operators:
+,-,*,/,% - Comparisons:
==,!=,<,>,<=,>= - Logical:
&&,||,! - Mixed numeric/float expressions infer
%dor%fautomatically inprint()
Printing
-
print(expr)handles:- String literals and
textvariables (%s) - Numeric and boolean (
num/yesno) (%d) - Floating-point (
real) (%f) - Lists: prints
[elem0, elem1, …]
- String literals and
Control Flow Extensions
-
if/elif/elseblocks with Python‑style indentation -
unless cond:inverse-ifsugar -
Guarded clauses:
if cond when guard: -
Early-exit guard:
guard cond else: -
Ternary expressions:
cond ? val1 : val2 -
Range membership:
x in a..b→x >= a && x <= b -
Pattern matching:
match x { case 0: print("zero") case 1: print("one") default: print("many") }
⚙️ Installation
Pyfdev provides a one‑step installer that sets up the CLI and automatically installs Tiny C Compiler (TCC) on your system.
Requirements
- Python 3.7+ installed
- On Linux/macOS: a system package manager (
apt,dnf,brew, etc.) - On Windows: PowerShell with administrative privileges (for package manager install)
Install via pip
pip install Pyfdev
Pyfdev --install-tcc # automatically installs TCC if missing
The --install-tcc flag will detect your OS and run:
- Debian/Ubuntu:
sudo apt-get update && sudo apt-get install tcc - Fedora/Red Hat:
sudo dnf install tcc - macOS (Homebrew):
brew install tcc - Windows (Chocolatey):
choco install tcc
Or combine into one command:
pip install Pyfdev && Pyfdev --install-tcc
📦 Usage
-
Write your Pyfdev code in a
.pffile, e.g.hello.pf:num x = 10 if x > 5: print("big") else: print("small") -
Compile & Run in one step:
Pyfdev hello.pfThis generates
hello.c, compiles it with TCC, and runs the executable. -
Separate Steps (optional):
Pyfdev --transpile hello.pf # emits hello.c Pyfdev --compile hello.c # emits hello.exe or ./hello Pyfdev --run hello.exe # runs the binary
🧪 Testing Features
-
Expressions & Prints:
num a = 5 + 3 * 2 real ratio = a / 2.0 print(a) print(ratio)
-
Control Flow:
num x = 3 unless x > 5: print("x is small") guard x < 0 else: print("x >= 0") return -
Ternary & Ranges:
num y = 7 print((y % 2 == 0) ? "even" : "odd") print(y in 1..10)
-
Match/Case:
num code = 2 match code { case 1: print("one") case 2: print("two") default: print("other") }
📚 Further Development
- Add
whileandforloops - User-defined functions and modules
- Enhanced error reporting with line numbers
- Standard library built-ins (e.g.
len(),append())
Contributions welcome! Submit issues and pull requests on GitHub: https://github.com/yourusername/Pyfdev
Happy coding with Pyfdev!
Project details
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 pyfdev-0.1.4.tar.gz.
File metadata
- Download URL: pyfdev-0.1.4.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
400307a7b5a77d040af272cd01d045d5b3715351803f79151b760e912cf31337
|
|
| MD5 |
4c6e751551a176466ef5ee408e723eb8
|
|
| BLAKE2b-256 |
9b2e324f6ab6b0802c2208f89a3dd96b5e5e6803ff52393888349f0723b274b3
|
File details
Details for the file pyfdev-0.1.4-py3-none-any.whl.
File metadata
- Download URL: pyfdev-0.1.4-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a1b804be65b4972842b366e48356c0f3f56f790c828aa11ccf9e753145d15e5
|
|
| MD5 |
43865b2cacfb4b7e8790caba82875b0a
|
|
| BLAKE2b-256 |
9a01f33a50a2afcad10fc7a9f900b183d3b63af06ffa8f8fae63806dafb997dc
|