Bicycle Repair Man - Rewrite Python Sources
Project description
Bicycle Repair Man
Rewrite python sources, highly experimental
How?
BRM is based on tokens which can be manipulated easily. Like an ast.NodeTransformer, we offer brm.TokenTransformer. TokenTransformer can do a lot of things starting from registering a new token (via register_{TOK_NAME} functions) to finding and replacing token patterns with parser rules.
!!! This project is highly experimental and has tons of bugs !!
Examples
Simple Patterns
from brm import TokenTransformer, pattern
class OperatorTransformer(TokenTransformer):
@pattern("number", "plus", "number")
def plus_to_minus(self, lhs, operator, rhs):
operator = operator._replace(string="-")
return lhs, operator, rhs
opt = OperatorTransformer()
assert opt.transform("2 + 2") == "2 - 2"
Custom Tokens and New Syntaxes
from brm import TokenTransformer, pattern
class SquareRoot(TokenTransformer):
def register_squareroot(self):
return "√"
@pattern("squareroot", "number")
def remove_varprefix(self, sr, number):
return self.quick_tokenize(f"int({number.string} ** 0.5)")
sqr = SquareRoot()
assert eval(sqr.transform("√9")) == 3
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
brm-0.2.2.tar.gz
(6.9 kB
view details)
File details
Details for the file brm-0.2.2.tar.gz.
File metadata
- Download URL: brm-0.2.2.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95720f21f0a8e9faf72cad113254d8cbc5efcdb891329e92a53a73b7e15cdff8
|
|
| MD5 |
c19f431c9a6fd9c452000c3d9872618d
|
|
| BLAKE2b-256 |
261386841291579dbb3b29a3be3524180c3ca0af956f256282ed21e6488e424d
|