Skip to content

Ansari-Codes/custom-syntax-for-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image

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 : replaces in)
# 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.

Logo

logo

About

This is a syntactic sugar over Python's syntax. Just a fun project!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages