Many features on this list propose different syntax to python, producing > different python "dialects" that can statically be transformed to python : > > - a,b += f(x) → _t = f(x); a += _t; b += _t; (augmented assignement > unpacking) > - a = 2x + 1 → a = 2*x + 1 (juxtaposition is product) > - f(*, x, y) → f(x=x, y=y) (simplekwargs) > - DSL specific language > - all def become @partially def > - etc... > > Using a modified version of ast, it is relatively easy to modifiy the > syntax tree of a program to produce another program. So one could compile > the "python dialect" into regular python. The last example with partially > for example doesn't even need new syntax. >
For my specific suggestion (simplekwargs), it's really not worth doing at all if it's not a part of standard Python in my opinion. The reason is tooling: you wouldn't get tools like Jedi and PyCharm to read these files and interpret them correctly. That being said, it could absolutely be a nice way to prototype things or for very edge cases. I'd recommend looking into parso (the AST lib that underlies Jedi). I used it for the analysis tool I wrote for simplekwargs and I've also used it to write my mutation tester mutmut. It has several advantages: - it's a roundtrip AST so you wouldn't lose any formatting or comments etc - it has an error recovery mode where parse errors are isolated in the AST as error nodes. You could probably use this to just enumerate error nodes and doing .get_code() on them and then have all your special parsing in there. - it is very liberal in what it accepts putting into an AST that it renders out to source again so it's quite easy to hack something together that works / Anders
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/