Custom Syntax for Python Language -- CSPLang
Project description
CSPLang – Custom Syntax for Python Language
GITHUB: https://github.com/Ansari-Codes/custom-syntax-for-python
PYPI: https://pypi.org/project/csp-lang/
CSPLang is a high-speed, symbolic syntactic wrapper for Python. It transforms a compact, symbol-heavy DSL into executable Python code. Designed with the principle of "Write less, do more," CSPLang turns Python's keyword-heavy structure into a sleek, streamlined experience.
The CSPLang Philosophy: What if you had the full power of the Python ecosystem, but with the minimalist elegance of a functional language?
🚀 Key Features (v2.0)
- Recursive One-Liners: Define functions, loops, and conditions all on a single line.
- Context-Aware Parsing: Intelligently distinguishes between logic colons and data colons (like in dictionaries or list slices).
- Symbolic Identity: Replaces verbose keywords (
def,while,return) with intuitive symbols ($,>>,->). - Zero-Overhead Integration: Use any Python library (
numpy,tqdm,asyncio) out of the box.
🛠 Installation
Using git
# Clone and Install
git clone https://github.com/Ansari-Codes/custom-syntax-for-python.git
cd custom-syntax-for-python
pip install .
Using pip+git
pip install git+https://github.com/Ansari-Codes/custom-syntax-for-python.git
From pypi
pip install csp-lang
📝 Syntax Overview
1. Variables & Assignment
Use the "flow" operator <- for assignment.
name <- `Abubakar`
age <- 19
data <- [1, 2, 3]
2. Universal Strings
Forget f"", "", or ''' '''. Use backticks for everything. They support multiple lines and escaped backticks (`).
msg <- `This is a
multi-line string with a \`backtick\` inside.`
# F-strings work naturally:
print(f`Hello, {name}!`)
3. Conditionals (Implicit If)
No need to type if. A standalone condition ending in a colon is automatically treated as a conditional.
x <- 10
x > 5: # This is 'if'
print(`Large`)
: x == 5: # This is 'elif'
print(`Medium`)
: # This is 'else'
print(`Small`)
# NEW: One-liners are now supported!
x == 10: print(`Perfect Score`)
4. Loops
- While: Use
>> - For: Use
=>(where:replacesin)
# While Loop
count <- 3
>> count > 0:
print(count)
count <- count - 1
# For Loop
=> i:range(3):
print(f`Iteration {i}`)
5. Functions & Methods
Defined using $ and []. The -> symbol acts as the return.
# Standard definition
$add[a, b]:
-> a + b
# Works inside classes too!
class Math:
$cube[self, n]:
-> n ** 3
⚡ Extreme Flexibility (v2.0 Stress Test)
Because CSPLang v2.0 uses a Recursive Split Strategy, it can handle complex Python constructs mixed with CSP symbols without breaking.
# Slicing and Dictionaries work perfectly!
data <- [10, 20, 30, 40]
subset <- data[1:3] # Transpiler ignores the slice colon
results <- {`val`: subset[0]} # Transpiler ignores the dict colon
# Complex nesting and one-lining
$check[n]:
>> n > 0:
n%2==0:
print("Even: ", n)
:n%2!=0: print("Odd: ", n)
:print(n in [1, 2, 3, 4][:2])
n <- n - 1
check(10)
💻 CLI Usage
| Command | Description |
|---|---|
csp run file.csp |
Transpiles and executes immediately. |
csp transpile file.csp -o out.py |
Converts CSP to a standalone Python file. |
csp test |
Runs the internal test suite. |
👨💻 Developer
I am Muhammad Abubakar Siddique Ansari, a 1st-year ICS student at KIPS College, Punjab (Pakistan). I'm passionate about Data Science, AI, and building tools that make developers' lives easier.
Portfolio: ansari-codes.github.io/portfolio
Logo
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 csp_lang-2.0.1.tar.gz.
File metadata
- Download URL: csp_lang-2.0.1.tar.gz
- Upload date:
- Size: 10.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca9f4c0a5aabd156a66f7191e9fe71b1986d7d4fe93200f7123d457d81075eb7
|
|
| MD5 |
6dc54e8bfbafe01ec3378072550fa657
|
|
| BLAKE2b-256 |
50c8210d796dd045a3282ed48a8963e284188c8a5177fd6ba9f7e5490d01b340
|
File details
Details for the file csp_lang-2.0.1-py3-none-any.whl.
File metadata
- Download URL: csp_lang-2.0.1-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e57af2211c722925c8673b830521697186c5d9f0582af5968a856fff425d8751
|
|
| MD5 |
758e3758c2172b56d1a82983558bec78
|
|
| BLAKE2b-256 |
7808e2206c9f1a1de1f46d15dda0b2bd978616fc69fc4987afab5fb4d1cb2cd4
|