From a924ae5051003a0b08a483de04b691294f32c7e9 Mon Sep 17 00:00:00 2001 From: IngCampos <15151130@mail.ita.mx> Date: Sat, 4 Jan 2020 12:10:03 -0600 Subject: [PATCH 1/6] =?UTF-8?q?Estructuraci=C3=B3n=20Inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creación de los archivos HTML(JavaScript puro a usar). Acorde a los requerimientos pedidos: Sin ningun framework y toda la interaccion por consola. Se opto por el uso de carpetas, por si mas adelante se requiera hacer un archivo js(objeto, funcion larga). --- .../Analizador_L\303\251xico.html" | 19 +++++++++++++++++++ "Capic\303\272as/Capic\303\272as.html" | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 "Analizador_L\303\251xico/Analizador_L\303\251xico.html" create mode 100644 "Capic\303\272as/Capic\303\272as.html" diff --git "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" new file mode 100644 index 0000000..5f70063 --- /dev/null +++ "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" @@ -0,0 +1,19 @@ + + + + + Analizador Léxico + + + + + +
+

Analizador Léxico

+
+ + + + \ No newline at end of file diff --git "a/Capic\303\272as/Capic\303\272as.html" "b/Capic\303\272as/Capic\303\272as.html" new file mode 100644 index 0000000..edc9db3 --- /dev/null +++ "b/Capic\303\272as/Capic\303\272as.html" @@ -0,0 +1,19 @@ + + + + + Analizador Léxico + + + + + +
+

Capicúas

+
+ + + + \ No newline at end of file From 68894c7501cfd3bb092691839b46191f80e5ef1b Mon Sep 17 00:00:00 2001 From: IngCampos <15151130@mail.ita.mx> Date: Sat, 4 Jan 2020 14:56:30 -0600 Subject: [PATCH 2/6] =?UTF-8?q?Analizador=5FL=C3=A9xico=20Obtencion=20de?= =?UTF-8?q?=20coordenadas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uso de la funcion match() para determina la estructura de la coordenada. Entrada y salida acorde a los requerimientos. Solo falta la obtencion de textos. --- .../Analizador_L\303\251xico.html" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" index 5f70063..f8ce91f 100644 --- "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" +++ "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" @@ -14,6 +14,20 @@

Analizador Léxico

\ No newline at end of file From 700cdd6cfbe206619b430adebc1edb6e7715eb17 Mon Sep 17 00:00:00 2001 From: IngCampos <15151130@mail.ita.mx> Date: Sun, 5 Jan 2020 15:10:30 -0600 Subject: [PATCH 3/6] =?UTF-8?q?Capic=C3=BAas=20Soluci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La función reverse realiza las principales operaciones: La realizacion de la suma del mismo numero con su opuesto y la validacion si el numero es capicúa. Estas operaciones junto con un ciclo, realiza lo deseado acorde a los requerimientos. --- "Capic\303\272as/Capic\303\272as.html" | 25 ++++++++++++++++++++++++- "Capic\303\272as/funciones.js" | 9 +++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 "Capic\303\272as/funciones.js" diff --git "a/Capic\303\272as/Capic\303\272as.html" "b/Capic\303\272as/Capic\303\272as.html" index edc9db3..7094e70 100644 --- "a/Capic\303\272as/Capic\303\272as.html" +++ "b/Capic\303\272as/Capic\303\272as.html" @@ -2,7 +2,7 @@ - Analizador Léxico + Capicúas @@ -12,8 +12,31 @@

Capicúas

+ \ No newline at end of file diff --git "a/Capic\303\272as/funciones.js" "b/Capic\303\272as/funciones.js" new file mode 100644 index 0000000..68cff19 --- /dev/null +++ "b/Capic\303\272as/funciones.js" @@ -0,0 +1,9 @@ +String.prototype.reverse = function () { + var x = this.length; + var cadena = ""; + while (x >= 0) { + cadena = cadena + this.charAt(x); + x--; + } + return cadena; +}; \ No newline at end of file From 07fbc523e891820f2c04a75a46be3794c72e6327 Mon Sep 17 00:00:00 2001 From: IngCampos <15151130@mail.ita.mx> Date: Sun, 5 Jan 2020 17:01:32 -0600 Subject: [PATCH 4/6] =?UTF-8?q?Analizador=5FL=C3=A9xico=20Obtencion=20de?= =?UTF-8?q?=20textos(avance)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Con la funcion match y la misma expresion regular(con variaciones) para las coordenadas se busca tambien obtener los textos. La solucion no es la mejor. Tratando de siempre de hacer codigo limpio y con una misma estructura. URL de ayuda: https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions Co-Authored-By: Martin --- .../Analizador_L\303\251xico.html" | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" index f8ce91f..7c3ce27 100644 --- "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" +++ "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" @@ -21,11 +21,20 @@

Analizador Léxico

let coordenadas = entrada.match(/(\()(\d+|-\d+|(\+)\d+),(\d+|-\d+|(\+)\d+)(\))/g); // Se determina que la coordenada cumpla con su estructura: Empezando y cerrando con parentesis, // comilla en medio, y los dos numeros, ya sean positivos(ya implicito sin signo de +) o negativos. + var textos = entrada.split(/[(\d+|-\d+|(\+)\d+)(\,)(\d+|-\d+|(\+)\d+)]+/); + // Se determinan los textos de cada coordenada haciendo separaciones con el mismo patron match, + // este tuvo leves moficaciones al no funcionar como es devido. + // Como resultado funciona, pero si en el texto se encuentran parentesis deja este de funcionar correctamente. + // Tratar con la entrada "(71,21)Hola(6 veces)(12,32)Mundo(tierra)(10,32)Hola" + textos.splice(0, 1); + // Textos tendra un valor de mas que coordenadas(puede ser texto o un '') + // Este se quita de lo contrario en una entrada como "Inicio(71,21)Hola(12,32)Mundo(10,32)Hola" + // A la coordenada (71,21) se le asignaria la palabra Inicio var salida = "El texto tiene "+coordenadas.length+" cordenadas:\n\n"; for (var coordenada in coordenadas) { - console.log(coordenadas[coordenada]); - salida += coordenadas[coordenada] + "\n"; + salida += coordenadas[coordenada] + " " + textos[coordenada++] + " \n"; } + console.log(salida); alert(salida); } From 306f0dec65505832857cc43e95ce6861cff34d83 Mon Sep 17 00:00:00 2001 From: IngCampos <15151130@mail.ita.mx> Date: Mon, 6 Jan 2020 11:23:25 -0600 Subject: [PATCH 5/6] =?UTF-8?q?Analizador=5FL=C3=A9xico=20Obtencion=20de?= =?UTF-8?q?=20textos(avance)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Al no dar solucion con match, se opto por extraer los textos dividiendo el texto con las coordenadas ya obtenidas. Para ello se creo una funcion. En caso de haber alguna coordenada repetida esta funcion falla. --- .../Analizador_L\303\251xico.html" | 12 +++++------- "Analizador_L\303\251xico/funciones.js" | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 "Analizador_L\303\251xico/funciones.js" diff --git "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" index 7c3ce27..0475756 100644 --- "a/Analizador_L\303\251xico/Analizador_L\303\251xico.html" +++ "b/Analizador_L\303\251xico/Analizador_L\303\251xico.html" @@ -12,24 +12,22 @@

Analizador Léxico

+