Skip to main content

CMRA — Creative Minimal Recursive Automaton language runtime

Project description

🐉 CMRA Language (Chimera)

"Where code breathes fire and flows like flame..."

CMRA (Chimera) is an esoteric programming language exploring reversible execution and direction control through a dragon-inspired syntax. Programs can soar up or dive down through code at runtime.

🔥 GitHub: Chimera418/cmra
🌐 Playground: cmra-esolang.vercel.app/playground.html
📚 Docs: cmra-esolang.vercel.app
📖 User Guide: GUIDE.md


🙌 Origin

CMRA began as a workshop project I attended by Tushar Sadhwani during a college multifest. The prototype we built is in prototype.py. For a non‑aliased baseline, see Tushar's esolangs repository. You can also read his blog at tush.ar.

This is a tiny side project made for fun and learning. If you build something cool or want to improve the interpreter, feel free to reach out on GitHub (@Chimera418) or Discord gamingchimera.

✨ Try it Online

🔥 Launch the Interactive Playground

Write and run CMRA code directly in your browser — no installation needed. Powered by Pyodide.


⚡ Installation & Quick Start

CMRA Esoteric Language Extension (VS Code / Cursor)

For the best developer experience, install the official IDE extension:

  • Marketplace: Install directly from the VS Code Marketplace or Open VSX Registry. Works on both VS Code and Cursor!
  • Manual Install: Download the .vsix from GitHub Releases.
  • Reliable Run command: Extension run uses python -m cmra "<file>" by default.
  • Config override: Set cmra.executablePath if you need a custom interpreter/command.
  • Diagnostics: Randomized dragon-themed diagnostics for .cmra, concise =-style diagnostics for .cmrash.

Diagnostic message examples (extension)

Fire Dragon (.cmra)

  • Line 4: 'x' is but a myth in this realm. Hint: Bind it before you attempt to command it. 🐉
  • Line 5: Fire Dragon rejects '=' in this chant. Hint: Use 'bind' for assignments in .cmra files.

Shadow Dragon (.cmrash)

  • Line 4: Undefined variable 'x'. Hint: Initialize it with '=' before using it.
  • Line 5: Unexpected 'bind' in .cmrash. Hint: Use '=' for assignments.

Full catalog: cmra-vscode-extension/ERROR_MESSAGES.md

Standalone Windows Executable

Don't have Python installed? No problem! Download the standalone cmra.exe from the latest GitHub Releases and add it to your PATH to run CMRA programs natively.

pip install (recommended)

# Install from PyPI:
pip install cmra

# Or install from source (development):
pip install -e .

# Now use `cmra` and `cmrash` from anywhere inside the venv:
cmra "test cases\test.cmra"
cmrash "test cases\test.cmrash"

No-install PowerShell wrapper

.\cmra.ps1 "test cases\test.cmra"

If you are already inside a subfolder such as test cases, use the parent-folder wrapper instead:

..\cmra.ps1 "test.cmra"

If you install CMRA into your environment and add it to PATH, you can also run:

cmra "test cases\test.cmra"

Run with Python directly

# Legacy single-file interpreters:
python cmra.py "test cases cmra\test.cmra"
python cmrash.py "test cases cmrash\test.cmrash"

🔱 The Twin Dragons

Dragon Entry point Keywords
🐲 Fire Dragon cmra.py / src/cmra/fire.py bind roar sniff dive soar murmur
🌑 Shadow Dragon cmrash.py / src/cmra/shadow.py = print check reverse ;
🐉 Ancient Wyrm prototype.py Compact baseline, inline sniff only

🐲 Language at a Glance

murmur Fire Dragon — count 0 to 5
i bind 0
flag bind 1
sniff i <= 5 : sniff flag == 0 : dive
flag bind 0
sniff flag == 0 : roar i
sniff flag == 0 : i bind i + 1
flag bind 1
sniff i <= 5 : sniff flag == 1 : soar
  • bind — assign variable
  • roar — print
  • sniff … : action — conditional (inline or block)
  • dive / soar — set execution direction forward / reverse
  • No loop keyword — direction reversal + flag guards make loops

→ See GUIDE.md for the full walkthrough.


⚡ Execution Model

A global DIRECTION (1 or -1) steps through lines. soar reverses it; dive restores forward. When direction goes past the first or last line, the program ends. Block sniff/check enters at the first (forward) or last (reverse) line of the block.


🎮 Test Cases & Projects

# Test cases (pip-installed cmra)
cmra "test cases\test.cmra"
cmra "test cases\test_strings.cmra"
cmra "test cases\test_arith.cmra"

# Projects
cmra projects\calculator.cmra
cmra projects\countdown.cmra
cmra projects\fizzbuzz.cmra
cmra projects\story_adventure.cmra

Test cases live in test cases/ (.cmra) and test cases cmrash/ (.cmrash).
Projects live in projects/: calculator, countdown, fizzbuzz, story_adventure.


📦 File Inventory

Path Purpose
src/cmra/ Installable Python package
src/cmra/cli.py Entry point for the cmra command
src/cmra/fire.py Fire Dragon interpreter
src/cmra/shadow.py Shadow Dragon interpreter
src/cmra/runner.py Shared dispatch logic
cmra.py Legacy Fire Dragon single-file
cmrash.py Legacy Shadow Dragon single-file
prototype.py Original workshop prototype
cmra.ps1 / cmra.bat No-install launchers
pyproject.toml Package metadata (pip install)
index.html + styles.css Static docs site
playground.html Browser REPL (Pyodide)
GUIDE.md Full user guide
keybind.txt Fire ↔ Shadow keyword cheatsheet
projects/ Showcase programs
test cases/ Regression tests (.cmra)
test cases cmrash/ Regression tests (.cmrash)

📜 License

CMRA is a learning project. Use freely, learn deeply, code fiercely! 🔥


May your code burn bright and your loops reverse true! 🐉🔥

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

cmra-0.1.2.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

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

cmra-0.1.2-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file cmra-0.1.2.tar.gz.

File metadata

  • Download URL: cmra-0.1.2.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for cmra-0.1.2.tar.gz
Algorithm Hash digest
SHA256 d408bcdeeb6ca247b408d732b3270c7367e9b68200c56ff2d7cc7557175279b3
MD5 be914903244bd4fbdce82b42da67b3c6
BLAKE2b-256 978d1b7c1d33977247a199ab84ef24edb7450f4fdf9f4403761231943ec19ff5

See more details on using hashes here.

File details

Details for the file cmra-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: cmra-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.0

File hashes

Hashes for cmra-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3632165cf6f0d406630dcc1bf2c6eea0cb639c0eb1a6d10d679609411fbd4e7e
MD5 39b489be9593de5133cf09eece0bfcc8
BLAKE2b-256 447250d8bccfeccfe20a135b31904e5de809b5adc3e058123c12584954160237

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