Error recovery/resilience
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 25/100
Rechercherichtung
Beginne damit, die parse-Funktionen des Parsers zu lesen und zu prüfen, wie sie derzeit Result<ast, ParseError> zurückgeben. Sieh dir das verlinkte Material zu LALRPOP und resilientem LL-Parsing an, um die Ansätze zur Fehlerbehandlung zu vergleichen. Als abgeschlossen gilt die Aufgabe, wenn das Projekt eine abgestimmte Entscheidung darüber getroffen hat, ob Fehlerbehandlung im Umfang enthalten ist, und falls ja, ein konkretes Design zur Bewahrung erfolgreich geparster Teile vorliegt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Currently, all of the parse functions return Result<ast, ParseError>. This means that if the file has a syntax error, we get the error and nothing else. However, there are some use cases in which having access to parts which did parse successfully would be beneficial:
- Language servers usually want to keep functioning when the file is temporarily broken during editing.
- Linters might want to skip over broken parts and continue reporting lints, or maybe up to the syntax error.
On the other hand, interpreters usually don't have too much use for this AFAIK.
lalrpop seems to have some support for error recovery: https://lalrpop.github.io/lalrpop/tutorial/008_error_recovery.html
Alex Kladov has written about error recovery, most recently here: https://matklad.github.io/2023/05/21/resilient-ll-parsing-tutorial.html
Is RustPython/Parser interested in error recovery or is it out of scope?
- Vorherrschende Sprache
- Rust
- Sterne
- 117
- Forks
- 38
- Ø Merge
- 4 T. 7 Std.
- Gemergte PRs (30 T.)
- 1
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus RustPython/Parser
-
Maintenance status Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 25/100
RustPython/Parser#140 · 3 Kommentare ·
-
`unic` is unmaintained Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 48/100
RustPython/Parser#139 · 3 Kommentare ·
-
cargo audit paste Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
RustPython/Parser#137 · 1 Kommentar ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 50/100
RustPython/Parser#133 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
RustPython/Parser#130 ·
Alle Issues in RustPython/Parser
Ähnliche Issues
-
risk:low runtime status:in-progress type:test
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
zeroclaw-labs/zeroclaw#11023 ·
-
good first issue refactor
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
EricSpencer00/Resilient#4835 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
bisq-network/bisq-musig#204 ·
-
agent:ready documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
cesarferreira/stax#890 ·