Comments (7)
One thing that might be helpful is to document the complete grammar of match
in an appendix to the PEP. (Currently the PEP contains a section containing a simplified version of the grammar, but a deep tool implementer is going to want the complete grammar.)
from patma.
I wonder if this is going to be a show-stopper? We may be putting a big burden on the deep tools in particular.
Note that certain deep tools will be affected less, or at least not in their parser: those that use ast.parse()
(like mypy). They will still have to learn how to visit Match
and match_case
nodes though, but at least the syntax definition is covered.
We would do well to put some effort into converting LibCST to PEG, though.
I created #65 with a task to add the full grammar to the PEP.
from patma.
This shouldn't be a show-stopper, otherwise you'd never be able to add a new Python statement again.
In fact, I think the choices we have made have been, overall, fairly friendly to third-party tools - like for example, making the indentation of the case clauses consistent with other statement forms.
Also, even if this feature lands in some future Python version, most users won't upgrade to that version for a while. That will give the third-party tools some time to catch up. Users who want to live on the bleeding edge will have to either suck it up, or pester their favorite tools for support, or possibly submit PRs.
from patma.
from patma.
How much effort do you think is involved in moving LibCST to PEG? It seems like a good idea if you plan to have any PEG-related functionality in Python in the future.
from patma.
It would be a significant effort. But we have a good starting point: the pegen parser generator can generate Python code too (with Python expressions in the actions of course). Maybe it wouldn't be that much effort to just investigate how LibCST currently constructs a parse tree? IIUC it currently uses 'parso', which itself is a fork of lib2to3.
from patma.
This seems like an ideal Summer of Code project.
from patma.
Related Issues (20)
- Phrasing update in abstract and overview HOT 2
- Disallow guards when using an "open pattern"? HOT 11
- Can the compiler move guards around? HOT 7
- JSON example HOT 5
- Add link to DLS paper to PEP 635 HOT 1
- Reach out to Pablo for code review HOT 1
- Use "as" for named patterns HOT 2
- Raise SyntaxErrors for anything following irrefutable patterns
- Finish AST validation for patterns
- Catch remaining errors in the compiler HOT 1
- Unify the PEP 634 and implementation grammars HOT 2
- Review progress for the reference implementation HOT 5
- Thomas Wouters' objections HOT 13
- Nick Coghlan's (revised) PEP 642 HOT 1
- Dedicated AST nodes for patterns? HOT 5
- PyCon 2021 HOT 10
- work error with zip param "strict=False" on py386 HOT 1
- Please document the design decisions behind PEP 634. HOT 7
- Case goto's? HOT 1
- PyCon JP 2021 HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from patma.