RustPython / RustPython/Parser
Error recovery/resilience
Personne n'a encore pris cette issue.
- Langage dominant
- Rust
- Étoiles
- 117
- Forks
- 38
- Merge moyen
- 4 j 7 h
- PR mergées (30 j)
- 1
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?
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.
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.
Évaluation
- Stack technique
- rust
- Domaine
- compilers
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100