Título
[en] FORMALIZATION OF KEY ALGORITHMS FROM LPEGN
Título
[pt] FORMALIZAÇÃO DE ALGORITMOS-CHAVE DE LPEG
Autor
[pt] GUILHERME DANTAS DE OLIVEIRA
Vocabulário
[pt] GRAMATICA DE ANALISE SINTATICA DE EXPRESSAO
Vocabulário
[pt] LPEG
Vocabulário
[pt] BOA FORMACAO
Vocabulário
[en] PARSING EXPRESSION GRAMMAR
Vocabulário
[en] LPEG
Vocabulário
[en] WELL FORMEDNESS
Resumo
[pt] Gramáticas de Análise Sintática de Expressão (PEGs, do inglês Parsing
Expression Languages) são uma classe de gramáticas formais determinísticas
originalmente descritas por Ford e amplamente utilizadas para descrever e
analisar linguagens de programação. PEGs foram implementadas por diversos
projetos. Um desses projetos é LPeg, uma biblioteca Lua que compila PEGs
para código otimizado que é executado por uma máquina virtual especializada.
A implementação de LPeg apresenta dois algoritmos-chave que nunca
foram publicados ou verificados formalmente. Primeiramente, LPeg possui sua
própria implementação da verificação de boa-formação introduzida por Ford,
essencial para garantir que a análise sintática termine. Em segundo lugar, LPeg
implementa um algoritmo que computa o conjunto de primeiros caracteres que
podem ser aceitos por um padrão, utilizado para gerar código de máquina
virtual mais eficiente para certos padrões.
Este trabalho formaliza esses algoritmos e prova que estão corretos
usando o provador de teoremas Coq. Além disso, provamos que esses algoritmos
terminam utilizando uma abordagem baseada em consumo de gás.
Resumo
[en] Parsing Expression Grammars (PEGs) are a class of deterministic formal
grammars originally described by Ford. They are widely used to describe
and parse machine-oriented languages and have been implemented by several
projects. One such project is LPeg, a Lua library that compiles PEGs into
optimized code that is run by a specialized virtual machine.
The implementation of LPeg features two key algorithms that have never
been published or verified before. First, LPeg has its own implementation of the
well-formedness check introduced by Ford, which is crucial for ensuring that
parsing terminates. Second, LPeg implements an algorithm that computes the
set of first characters that may be accepted by a pattern, which it uses to
optimize the virtual-machine code for certain patterns.
This work formalizes these algorithms and proves their correctness using
the Coq proof assistant. We also prove their termination using a gas-based
approach.
Orientador(es)
ROBERTO IERUSALIMSCHY
Banca
ROBERTO IERUSALIMSCHY
Banca
SERGIO QUEIROZ DE MEDEIROS
Banca
HUGO MUSSO GUALANDI
Catalogação
2025-06-17
Apresentação
2025-04-24
Tipo
[pt] TEXTO
Formato
application/pdf
Idioma(s)
INGLÊS
Referência [pt]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=71084@1
Referência [en]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=71084@2
Referência DOI
https://doi.org/10.17771/PUCRio.acad.71084
Arquivos do conteúdo
NA ÍNTEGRA PDF