Comments (5)
Hi! Nothing like this is built in - not sure how it could be welded on, but very interested to hear how you go if you come up with something!
Best regards,
Nick
from superpower.
@nblumhardt, to be honest, in such case I see only two solutions:
- as commonly done, you can always create additional parsers for the "wrong" situations
- avoid this problem altogether and provide completions only for correctly parsed programs (identifier completions, for example)
from superpower.
The first solution will partially solve the problem, however, we all know that you cannot physically cover all the scenarios. Also, the codebase will become a big mess, trying to make parsers for all the "wrong" paths a user can take.
The second one is feasible in the beginning, as most of the times you want exactly that type of completions. However, in that case you will have a very limited set of possible completions you can provide.
Either of those ways won't provide a full experience for the user. The only practical solution I see is having a parser provide its state in a form of a list of "possible" trees, to solve the possible ambiguity problem of parsing incomplete sources.
from superpower.
Also, you can try to use the type data of the previous successful compilations as the source of truth. It will allow you to query data about the failed token, based on that info and provide a meaningful set of completions. Hmm, it won't even require any kind of magic. Interesting!
from superpower.
Thanks for sharing your thoughts. I might close this one as I don't think there's a direction to follow here, yet, but keep us in the loop with your investigations! :-)
from superpower.
Related Issues (20)
- Zero allocation parsing? HOT 1
- Unit Testing? HOT 1
- Is it normal that NaturalUInt32 raise System.OverflowException : Value was either too large or too small for a UInt32 ? HOT 2
- [Request] Need a new introductory blog for v2 (or v3) HOT 1
- Questions: My On Going Questions HOT 4
- Parsing confusion: Zero-width parsers, what rewinds and when, and properly returning a "failed" parse? HOT 4
- [Question] New Release? HOT 1
- Thank you for writing superpower HOT 1
- Better `Message` HOT 5
- Improve error reporting for some failed match scenarios HOT 9
- Using backslash in CStyle QuotedString causes syntax error HOT 1
- `OptionalOrNull()` HOT 2
- Send parser value into another parser HOT 1
- Tokenizer and Parser Assistance HOT 3
- TokenizerBuilder and Mapping CLR Types HOT 2
- Dynamically referencing Parsers via Decorators for TokenizerBuilder HOT 2
- Some way to check the next token HOT 3
- Missing: Cheat sheet for upgrading from Sprache to Superpower HOT 1
- How to handle consecutive delimiters HOT 6
- dotnet 8 upgrade? 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 superpower.