Creación de un analizador de árbol de sintaxis abstracta para su propio lenguaje específico de dominio
pyastbuilder
es un marco de Python para crear analizadores que construye un árbol de objetos que refleja el árbol de sintaxis abstracta (AST) del lenguaje, por el que se puede navegar, buscar y modificar pitónicamente. En el paquete se incluye un ejemplo demostrativo: un analizador para el lenguaje SPARQL del W3C, es decir, sparqlparser.py
, que implementa Sparql v1.1. Sin embargo, se puede facilitar cualquier otro lenguaje especificado por BNF.
Existen muchos analizadores específicos o genéricos, sin embargo, la razón para desarrollar pyastbuilder
es que a menudo el análisis se considera un proceso dinámico y de transmisión en vivo en el que existen varios ganchos a los que uno puede adjuntar su propio código, en lugar de la generación de una sintaxis abstracta y estática. árbol del "documento" electrónico, con una API para su acceso para su procesamiento posanalizado.
El trabajo pesado sobre el análisis real se deja en manos de pyparsing, que está incluido y se utiliza ampliamente.
Seguimos nuestros siguientes
PRINCIPIO DE DISEÑO: Sea predictivo. Definir criterios claros para la ubicación de la documentación. ¿Qué parte de la documentación se incluye en los archivos README, qué partes se pueden encontrar en las páginas wiki y qué información se incluye en el código como comentarios? Defina y documente sus criterios de documentación, preferiblemente en la documentación principal que encontrará su usuario o desarrollador, que probablemente sea el archivo README.md del proyecto.
Por ello seguimos los siguientes criterios en cuanto a documentación:
pyastparser
se documentará como archivos README.md en cada carpeta del árbol fuente.pyastbuilder
, así como toda la documentación detallada y específica del código , está disponible en todo el código fuente como sintaxis de marcado reStructuredText (reST). Dado que este tipo de documentación sigue la convención de Python pydoc, se pueden generar sus páginas HTML correspondientes. La documentación estará disponible después de crear el HTML apuntando un navegador al archivo Doc/build/html/index.html
( TODO ).Estos contendrán aquella parte de la documentación que involucra el diseño genérico sobre el código fuente que está disponible en la parte particular del árbol. Esta documentación está dirigida a los desarrolladores del proyecto con el fin de proporcionarles un conocimiento profundo de:
Puede encontrar una descripción completa de la documentación wiki en la página de inicio de wiki. Se pueden esperar las siguientes entradas:
sparqlparser
como biblioteca en su propio código Python, así como cualquier otro xxxparser
listo para usar que pueda proporcionarse en el futuro de este proyecto. Dado que cualquier otro xxxparser
se basará en este mismo proyecto, podemos asumir con seguridad que encontraremos muchas referencias a casos de uso muy similares o incluso idénticos del sparqlparser
.xxxparser
, compártalo con este proyecto y proporcione su propio capítulo en nuestro Manual del usuario sobre el uso de este analizador. Sin embargo: no duplique la documentación , utilice el manual sparqlparser
como manual de referencia. Lea CONTRIBUTING.md para obtener detalles sobre nuestro código de conducta y el proceso para enviarnos solicitudes de extracción.
Usamos SemVer para el control de versiones. Para conocer las versiones disponibles, consulte las etiquetas en este repositorio.
Véase también la lista de contribuyentes que participan(d) en este proyecto.
Este proyecto tiene la licencia MIT; consulte el archivo LICENSE.md para obtener más detalles.