Construindo um analisador de árvore de sintaxe abstrata para sua própria linguagem específica de domínio
pyastbuilder
é uma estrutura python para construir analisadores que constrói uma árvore de objetos que reflete a árvore de sintaxe abstrata (AST) da linguagem, que pode ser navegada, pesquisada e modificada pythonicamente. Incluído no pacote está um exemplo demonstrativo: um analisador para a linguagem W3C SPARQL, ou seja, sparqlparser.py
, que implementa Sparql v1.1. No entanto, qualquer outra linguagem especificada pela BNF pode ser facilitada.
Existem muitos analisadores específicos ou genéricos, no entanto, a razão para desenvolver pyastbuilder
é que muitas vezes a análise é considerada um processo dinâmico e de streaming no qual existem vários ganchos aos quais se pode anexar o próprio código, em oposição à geração de uma sintaxe estática e abstrata árvore do “documento” eletrônico, com API para seu acesso para processamento pós-analisado.
O trabalho pesado sobre a análise real é deixado para o pyparsing, que está incluído e é amplamente utilizado.
Seguimos nossos seguidores
PRINCÍPIO DO DESIGN: Seja Preditivo. Defina critérios claros para a localização da documentação. Que parte da documentação é colocada nos arquivos README, que partes podem ser encontradas nas páginas wiki e que informações você coloca no código como comentários? Defina e documente seus critérios de documentação, de preferência na documentação principal que seu usuário ou desenvolvedor irá acessar, que provavelmente é o arquivo README.md do projeto.
Portanto, seguimos os seguintes critérios em relação à documentação:
pyastparser
serão documentadas como arquivos README.md em cada pasta da árvore de origem.pyastbuilder
, bem como toda a documentação detalhada específica do código , está disponível em todo o código-fonte como sintaxe de marcação reStructuredText (reST). Como este tipo de documentação segue a convenção do python pydoc, suas páginas HTML correspondentes podem ser geradas. A documentação estará disponível após a construção do HTML apontando um navegador para o arquivo Doc/build/html/index.html
( TODO ).Eles conterão aquela parte da documentação que envolve o design genérico do código-fonte que está disponível na parte específica da árvore. Esta documentação destina-se aos desenvolvedores do projeto com o objetivo de proporcionar-lhes um conhecimento profundo de:
Uma visão geral completa da documentação do wiki pode ser encontrada na página inicial do wiki. Pode-se esperar as seguintes entradas:
sparqlparser
como biblioteca em seu próprio código python, bem como qualquer outro xxxparser
pronto para uso que possa ser fornecido no futuro deste projeto. Como qualquer outro xxxparser
será baseado neste mesmo projeto, podemos assumir com segurança que encontraremos muitas referências a casos de uso muito semelhantes ou mesmo idênticos no sparqlparser
.xxxparser
, compartilhe-o com este projeto e forneça seu próprio capítulo em nosso Manual do Usuário sobre o uso deste analisador. No entanto: Não duplique a documentação , mas use o manual sparqlparser
como manual de referência. Leia CONTRIBUTING.md para obter detalhes sobre nosso código de conduta e o processo de envio de pull requests para nós.
Usamos SemVer para versionamento. Para as versões disponíveis, consulte as tags neste repositório.
Veja também a lista de colaboradores que participam(d) deste projeto.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE.md para obter detalhes