@juanrguezsu7/lexer-generator
v1.1.9
Published
A package that can generate basic lexical analyzers
Downloads
9
Readme
Lab: Lexer Generator
Author
- Juan
- Rodríguez Suárez
- [email protected]
El paquete está publicado en GitHub Registry
- Enlace al paquete: módulo
El módulo exporta los generadores léxicos y funcionan correctamente
module.exports = { buildLexer, nearleyLexer };
- El funcionamiento se puede comprobar en los tests o ejecutando el archivo
sample.js
que se encuentra en la raíz del proyecto.
Se proporciona información de localización (offset, etc.)
tokens.push({ type: token, value: newValue, line: line, col: match.index - actualColumn, length: match[0].length });
- Se ha añadido la información de localización en el atributo
line
,col
,length
de los tokens.
El manejo de errores con el token ERROR es correcto
regexps.push(/(?<ERROR>(.|\n)+)/);
- Se ha añadido un token
ERROR
para manejar los errores al final del resto de regexps para no interferir con los tokens correctos.
Manejo de "tokens skip" correcto
if (validTokens.get(token).skip) continue;
- Dentro del bucle de la función
buildLexer
se comprueba si el token es de tiposkip
para no añadirlo al array de tokens.
Contiene tests comprobando el atributo de transformación value
- Existen tests en el archivo
test/build-lexer.test.js
que comprueban tanto el correcto funcionamiento del lexer general y la compatibilidad con Nearley.JS.
Contiene tests comprobando la compatibilidad del lexer generado con Nearley.JS (egg-parser)
- Dentro de la carpeta
test
se encuentran los tests que comprueban la compatibilidad del lexer generado con Nearley.JS.
Opcional: estudio de covering
- En
docs/cov
se encuentra el estudio de covering del módulo.
Se ha hecho CI con GitHub Actions
- Se han añadido 3 GH Actions para comprobar el correcto funcionamiento del módulo; una para desplegar la documentación en GH Pages, otra para publicar el módulo en el GitHub Registry y otra para comprobar el correcto funcionamiento del módulo.
Los informes están bien presentados (Vuepress)
- Documentación generada con Vuepress en la carpeta
docs/doc
.
La documentación es completa
- Se han documentado todas las funciones y se han añadido ejemplos de uso.
Opcional: publicar la documentación de la API usando GitHub Pages en la carpeta docs/
- Se encuentra en el About de este repositorio: docs
Se ha hecho un buen uso del versionado semántico en la evolución del módulo
- Se han añadido tags en el repositorio para marcar las versiones del módulo importantes además de seguir el versionado semántico.
Calidad del código
- Se ha usado ESLint para comprobar la calidad del código usando la configuración de
.eslintrc.json
que se encuentra en la raíz del proyecto.