Error recovery/resilience
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
Commencez par lire les fonctions parse de l’analyseur et la manière dont elles renvoient actuellement Result<ast, ParseError>. Consultez les ressources liées sur LALRPOP et l’analyse LL résiliente afin de comparer les approches de récupération. La tâche est considérée comme terminée lorsque le projet a pris une décision consensuelle sur l’inclusion ou non de la récupération des erreurs dans le périmètre et, le cas échéant, dispose d’une conception concrète permettant de préserver les parties analysées avec succès.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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?
- Langage dominant
- Rust
- Étoiles
- 117
- Forks
- 38
- Merge moyen
- 4 j 7 h
- PR mergées (30 j)
- 1
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de RustPython/Parser
-
Maintenance status Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 25/100
RustPython/Parser#140 · 3 commentaires ·
-
`unic` is unmaintained Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
RustPython/Parser#139 · 3 commentaires ·
-
cargo audit paste Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
RustPython/Parser#137 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 50/100
RustPython/Parser#133 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
RustPython/Parser#130 ·
Toutes les issues de RustPython/Parser
Issues similaires
-
risk:low runtime status:in-progress type:test
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
zeroclaw-labs/zeroclaw#11023 ·
-
good first issue refactor
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
EricSpencer00/Resilient#4835 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
bisq-network/bisq-musig#204 ·
-
agent:ready documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
cesarferreira/stax#890 ·