Skip to main content

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

  • numint (e.g. num x = 5)
  • realdouble (e.g. real pi = 3.14)
  • textchar* (e.g. text msg = "hello")
  • yesnobool (e.g. yesno flag = true)
  • list → homogeneous arrays + length (e.g. list nums = [1,2,3] or list words = ["a","b"])

Arithmetic & Boolean Expressions

  • Operators: +, -, *, /, %
  • Comparisons: ==, !=, <, >, <=, >=
  • Logical: &&, ||, !
  • Mixed numeric/float expressions infer %d or %f automatically in print()

Printing

  • print(expr) handles:

    • String literals and text variables (%s)
    • Numeric and boolean (num/yesno) (%d)
    • Floating-point (real) (%f)
    • Lists: prints [elem0, elem1, …]

Control Flow Extensions

  1. if / elif / else blocks with Python‑style indentation

  2. unless cond: inverse-if sugar

  3. Guarded clauses: if cond when guard:

  4. Early-exit guard: guard cond else:

  5. Ternary expressions: cond ? val1 : val2

  6. Range membership: x in a..bx >= a && x <= b

  7. 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

  1. Write your Pyfdev code in a .pf file, e.g. hello.pf:

    num x = 10
    if x > 5:
        print("big")
    else:
        print("small")
    
  2. Compile & Run in one step:

    Pyfdev hello.pf
    

    This generates hello.c, compiles it with TCC, and runs the executable.

  3. 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 while and for loops
  • 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

pyfdev-0.1.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfdev-0.1.1-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file pyfdev-0.1.1.tar.gz.

File metadata

  • Download URL: pyfdev-0.1.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for pyfdev-0.1.1.tar.gz
Algorithm Hash digest
SHA256 348786cdcdea74dc83bd8f586ad30bfd4ab30a842c50adf2f1eb4984d0d84022
MD5 9f3b82cc926c8f86a7439ae1637dcded
BLAKE2b-256 3a73f21e1eef3217d93a2c21287b3cc0b80b6a29aede4cc7ef3cb35e417d0f13

See more details on using hashes here.

File details

Details for the file pyfdev-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyfdev-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for pyfdev-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c1898b6fb81bbff9e642978f92789c6564f8e1d6f4481a3869cf1dd3b3a1fef8
MD5 3be3c8ea44a3a8cb6052a2426578c0d3
BLAKE2b-256 11f43cffaebcaac77ddab7f7b3c379c3b845b4740b2994d8e8697678fc7af5b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page