elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Por que obtengo esta salida? C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por que obtengo esta salida? C++  (Leído 335 veces)
JenselG

Desconectado Desconectado

Mensajes: 18


Ver Perfil
¿Por que obtengo esta salida? C++
« en: 12 Enero 2021, 17:30 pm »

Hola a todos.

Estoy creando un lenguaje de programacion en C++ y por ahora tengo parte del analizador lexico.
Recibe el codigo fuente en un string y devuelve un vector con los tokens.

Codigo del analizador léxico.
https://drive.google.com/file/d/1LvIGqBoTN8TDnrsHyqyjBmWc5cpQSA2d/view?usp=sharing

Codigo del archivo main
https://drive.google.com/file/d/1NU8jUpy6e37Zpzwp4nx1lKkL28stpu35/view?usp=sharing

Codigo de la clase Token
https://drive.google.com/file/d/1E9rxj4OOrasqVZ2n0wc1tP8wH-SEz9WP/view?usp=sharing


Se supone que la salida debe mostrar los tokens de esta forma:

Token {Tipo: <el tipo>, Lexema: <el lexema>, Linea: <numero de linea>}


Pero cuando tengo codigo multilinea, ocurre esto.

Entrada


Salida


Tipo 8   significa cadena.
Tipo 52 significa fin de linea. (salto de linea)
Tipo 53 significa fin de archivo.

Mi pregunta es:

¿Por qué en la linea 3 de la salida, ademas de tomar el "Como", tambien toma el salto de linea y el "Estas"?.

He probado que solo cuando tengo codigo de mas de 2 lineas, cada 2 lineas en la salida ocurre eso, se lleva el primer lexema, el salto de linea y el lexema siguiente, todo ello en un solo token.

¿Por qué ocurre?

Toda orientacion/respuesta es aceptada, gracias.


En línea

[D]aniel

Desconectado Desconectado

Mensajes: 242



Ver Perfil
Re: ¿Por que obtengo esta salida? C++
« Respuesta #1 en: 12 Enero 2021, 22:24 pm »

Hola, yo en mis tiempos de programador he tenido ese mismo problema y siempre era que los saltos de línea estaban mal insertados en el archivo a leer, pero en Python yo usaba algo para ver los \r y los \n que eso es justamente lo que tenés que revisar, o también lo inspeccionada con el editor de Notepad++ buscando por Expresiones regulares, revisa eso dentro del archivo donde tenés el "Hola cómo estás?.

Y si te preguntas como yo lo he solucionado, simplemente he corregido los saltos de línea para que estén correctamente insertados y hayan solamente los que tienen que haber, lo mismo con los retorno de carro.

Después de cada texto debe ir el \r\n, para cualquier PC todo lo que escribas es un solo texto largo y los editores y programas son los que los hacen bajar para ubicarlos en la línea de abajo, pero si miras un texto en crudo verás que todo va seguido, usando tu ejemplo deberías ver:


Código:
Hola\r\nComo\r\nEstas\r\n


Saludos


« Última modificación: 12 Enero 2021, 22:29 pm por [D]aniel » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como obtengo en java?
Java
difer 1 1,537 Último mensaje 16 Octubre 2005, 06:11 am
por ryusuke
Que es un Descodificador de DVD y como lo obtengo
Multimedia
kichan 2 2,113 Último mensaje 17 Marzo 2006, 17:45 pm
por kichan
como obtengo wep key????
Redes
guillermofloyd 2 5,368 Último mensaje 12 Junio 2012, 05:19 am
por P4nd3m0n1um
Una imagen y un enlace de salida, así quieren robar tus datos con esta campaña..
Noticias
wolfbcn 0 385 Último mensaje 15 Marzo 2017, 14:19 pm
por wolfbcn
¿Cómo obtengo el RetAddress de una función que está con detour?
Programación C/C++
josue9243 6 1,634 Último mensaje 17 Agosto 2017, 18:39 pm
por josue9243
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines