npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

generaanalizadorlexico

v1.0.5

Published

**NOTA** No olvidarse de configurar entorno con : ```sh npm config set @ull-esit-pl-1920:registry https://npm.pkg.github.com ```

Downloads

5

Readme

Lexer - Alu0101160337

NOTA No olvidarse de configurar entorno con :

npm config set @ull-esit-pl-1920:registry https://npm.pkg.github.com

Antes de intentar npm install

Este módulo consiste en un método que recibe un array con el siguiente formato:

let tokens = [
    [/*<nombre_tipo>*/,/*<Regex que lo reconoce>*/,/*Debe ignorarse?(Por defecto, false)*/], //1
    [/*<nombre_tipo>*/,/*<Regex que lo reconoce>*/,/*Debe ignorarse?(Por defecto, false)*/], //2
    .
    .
    .
    [/*<nombre_tipo>*/,/*<Regex que lo reconoce>*/,/*Debe ignorarse?(Por defecto, false)*/] //N
]

Y con ese array, se construye un analizador léxico en forma de función que recibe como argumento la cadena a analizar

const {buildLexer} = require(".lexer");
let tokens = [ ... ]; //Formato explicado anteriormente
 
const analizadorLexico = buildLexer(tokens);

Pudiendo invocarse de la siguiente forma:

const str = 'const varName = "value"';
analizadorLexico(str)

Un ejemplo completo de su uso se expone a continuación:

const SPACE = /(?<SPACE>\s+|\/\/.*)/;
const RESERVEDWORD = /(?<RESERVEDWORD>\b(const|let)\b)/;
const ID = /(?<ID>\b([a-z_]\w*))\b/;
const STRING = /(?<STRING>"([^\\"]|\\.")*")/;
const OP = /(?<OP>[+*\/=-])/;
 
const myTokens = [
  ['SPACE', SPACE,true], ['RESERVEDWORD', RESERVEDWORD], ['ID', ID],
  ['STRING', STRING], ['OP', OP]
];
const str = ' // Entrada con errores\nlet x = 42*c';
 
 
const {buildLexer} = require('./lexer');
console.log(buildLexer(myTokens)(str));

Mostrando por pantalla el siguiente resultado

[
  { type: 'RESERVEDWORD', value: 'let' },
  { type: 'ID', value: 'x' },
  { type: 'OP', value: '=' },
  { type: 'ERROR', value: '42*c' }
];

NOTA Conviene destacar que, en caso de que las expresiones regulares pasadas para construir el analizador léxico sean incapaces de analizar toda la cadena pasada, aquella parte sin analizar es pasada en el resultado como un token de tipo "ERROR", tal y como se muestra en el ejemplo previo.


Subiendo un modulo a Github registry

Veamos... Para subir mi modulo a github registry

Antes de nada, configure npm ejecutando la siguiente secuencia de comandos

npm set init.author.name "alu0101160337"
npm set init.author.email "[email protected]"
npm set init.author.url "https://github.com/JDM-ULL-93"

Bien, tras esa pequeña configuración de NPM se me crea un fichero '~/.npmrc' con la siguiente contenido:

init.author.name=alu0101160337
[email protected]
init.author.url=https://github.com/JDM-ULL-93
  1. Cree un token en github dirigiendome a Settings->Developer Settings->Personal access tokens-> boton "Generate New Token" y seteandole los siguientes permisos:

permisos_tokens

  1. Copie el codigo del token creado (una cadena de 40 digitos hexadecimales) y, con ese codigo copiado, ejecute el siguiente comando:
npm login --registry=https://npm.pkg.github.com

comando_npm_login

  1. Introduciendo lo siguiente :

datos_npm_login

Nota: En password pegue la cadena del token creado anteriormente

Nuevamente, todo esto modifica nuestro fichero '~/.npmrc' añadiendole la siguiente información:

//npm.pkg.github.com/:_authToken=<cadena de 40 digitos hexadecimales>

Bien, ya estamos casi listos para publicar nuestro modulo como un paquete(package) en Github Registry, pero antes, dado que queremos publicarlo en el repositorio "@ull-esit-pl-1920/p10-t2-lexgen-code-jdm-ull-93" (en mi caso), modificaremos el fichero "package.json" cambiando el atributo "name" por esto:

"name": "@ull-esit-pl-1920/p10-t2-lexgen-code-jdm-ull-93",

Como lo que queremos es subirlo a Github packages , además, le añadimos la siguiente propiedad al mismo "package.json":

"publishConfig": {
    "registry": "https://npm.pkg.github.com"
  },

Ya esta casi todo listo, en mi caso, como publico el modulo sobre el mismo repositorio, me interesa que varios ficheros y directorios no se incluyan en la publicación, para ello, en el mismo directorio de "package.json" creo un fichero llamado ".npmignore" que funciona exactamente de la misma forma que un ".gitignore", de modo que le agrego lo siguiente:

img/
.github/
.gitignore
.git/
lexer.test.js

Ahora si, ahora estamos listos, solo falta publicarlo, y eso lo logramos con la llamada al comando:

npm publish

npm_publish

Por norma general, en la versión mas minimalista, solo nos interesa que se suban 3 ficheros:

  1. README.md, fichero que contendra documentación sobre como usar el modulo
  2. package.json, fichero que indicará las dependencias de otros modulos y como se invocará el modulo
  3. lexer.js , en mi caso, el fichero script que contiene el codigo del modulo, por norma general es "index.js"

Uso del modulo

Para empezar, para que npm pueda buscar y encontrar nuestro modelo, en todas las maquinas en las que queramos usarla deberemos escribir una vez el siguiente comando:

npm config set @ull-esit-pl-1920:registry https://npm.pkg.github.com

Esto sirve para vincular un ambito(scope) a un repositorio sobre el que buscarlo, de forma que todo modulo que se encuentra dentro del ambito "@ull-esit-pl-1920" siempre será buscado en https://npm.pkg.github.com

Y nos introducirá en ~/.npmrc la siguiente linea:

@ull-esit-pl-1920:registry=https://npm.pkg.github.com

Una vez tenemos el entorno configurado y listo, siempre que queramos utilizar nuestro modulo:

  1. Primero lo instalaremos con:
npm install @ull-esit-pl-1920/p10-t2-lexgen-code-jdm-ull-93[@1.0.3]
  1. Y luego lo usaremos en nuestro codigo con
const {buildLexer} = require("@ull-esit-pl-1920/p10-t2-lexgen-code-jdm-ull-93")