RustPython / RustPython/Parser
Error recovery/resilience
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Rust
- Estrelas
- 117
- Forks
- 38
- Merge médio
- 4d 7h
- PRs com merge (30d)
- 1
Descrição
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?
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece lendo as funções parse do parser e como elas retornam atualmente Result<ast, ParseError>. Revise o material vinculado sobre LALRPOP e parsing LL resiliente para comparar as abordagens de recuperação. Considera-se concluído quando o projeto tiver chegado a uma decisão acordada sobre se a recuperação de erros faz parte do escopo e, caso faça, houver um design concreto para preservar as partes analisadas com sucesso.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- rust
- Domínio
- compilers
- Tipo de issue
- Funcionalidade
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Status de atividade
- Estagnada
- Clareza
- Precisa de esclarecimento
- Facilidade para iniciantes
- 25/100