Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cómo dividir un código JavaScript en sus partes más básicas

8 de junio de 2015

Hola chicos, necesito hacer un programa que al escribir una función (por ejemplo a = 2 - 4) esto se pueden separar de forma [0] = a,[1] =, [2] = 2, así en secuncia.

También debe indicar el tipo de dato que es, por ejemplo [0] = a constante, [1] = = operador, [2] = 2 numerico. No se si me expliqué, pero también que yo ponga if / else en una expresion cualquiera y me diga el nombre. No se cómo poder hacer que me salga el nombre de cada operador , constante , comparador etc.. No se si me puedan dar una idea de cómo hacerlo.


Respuestas

#1

Lo que quieres hacer se llama "tokenizar el código JavaScript" y consiste en dividir el código en sus partes más pequeñas. Si necesitas esto para tu trabajo, olvídate de hacerlo a mano porque te va a costar muchísimo tiempo y ya existen varios "tokenizadores" listos para usar, como por ejemplo code-tokenizer.

Si tienes que hacerlo como ejercicio de clase, entonces te recomiendo que hagas algunas simplificaciones porque si no, se va a complicar bastante. En este artículo explican con todo detalle cómo se hace esta aplicación, por lo que puedes ver que no es nada trivial.

En tu caso, lo que te recomiendo es que pongas como restricción que todo el código original debe estar bien formateado a nivel de espacios en blanco. En otras palabras, que el código solo se pueda escribir así: a = 2 - 4; y no así: a=2 - 4; o así a = 2-4;. Con esta restricción, podrías usar el método split() de JavaScript para dividir el código original mediante sus espacios en blanco.

Después ya sólo tienes que comprobar cómo es cada trozo de código (que se llama token y de ahí el nombre "tokenizador"). En algunos casos la comprobación será muy sencilla (ejemplo: if ('var' == $token) { ... }) pero en otros casos tendrás que usar expresiones regulares para comprobar si el token es un valor numérico, una cadena de texto, etc.

@javiereguiluz

9 junio 2015, 8:55