buenas a todos
estoy intentado hacer un analizador lexico para una clase que estoy creando pero como soy un poco novato en esto necesito un poco de ayuda.
el program comipla bien y hasta tiene un poco de exito en la compilacion del codigo pero como siempre con un porcentaje de error, ahi esta el codigo.
int main()
{
char *token[]={"hola","creado", "interna_creado"};
char *p =new char;
cin >>p;
for(int i = 3;i>0; i--)
{
if(p== token[i])
{
cout << "Token encontrado" <<token[i]
<< "en la poscion "<< i<<endl;
}else cout <<"token no enontrado";
}
delete p;
return 0;
}
ehmmm
new char??
no sería new char[longitud] ? Estás reservando memoria para UN caracter.
Luego comparas un caracter con... una posicion de memoria de un array? O,o
para comparar cadenas usa strcmp(cadena1,cadena2)
PD: si he dicho alguna barbaridad perdonadme, yo soy de c no de c++, el operador new es como chino jaja
Si especificaras qué es lo que quieres que haga el código sería mejor.
kalix_9, aca te dejo un codigo en C de mas o menos la interpretacion de di yo de lo que queres :P, igual cabe aclarar que es un ejemplo muy basico...
Concuerdo con Leo Gutiérrez., tendrias que ser mas especifico a la hora de plantear tu problema...
#include <stdio.h>
#include <string.h>
int main( void )
{
char *token[] = { "hola", "creado", "interna_creado" };
char c;
scanf( "%c", &c );
for ( int i = 0; i < 3; ++i )
{
for ( int j = 0; j < strlen( token[i] ); ++j )
{
if ( c == token[i][j] )
printf( "Token %c encontrado en la posicion %d\n", token[i][j], i );
else
puts( "Token no encontrado" );
}
}
return 0;
}
Salu10.
hola , gracias por responder .
lo que quiero es hacer una especie de analizador lexico , pero primero tengo que enteder como comparar cadenas completas si usar ninguna funcion especial de el espacio std ni de ninguna lib.
y pense que con un array de una dimension bastaria para poder hacer una comparacion
No se q es un "analizador lexico" pero interpretando tu code, pareciera q lo que quieres es que busque una letra en una palabra... Y para eso te sirve el code de nicolas_cof... pero como hablas de comparar cadenas... pes pareciera que quieres buscar una palabra en la lista de palabras q tienes... para eso pes haz tu mismo una funcion que compare las cadenas... ya q duce q no quieres usar ninguna funcion hecha...
Saludos...
PD: Estoy casi seguro q en el foro hay ejemplos de como hacerlo
analisador lexico podria ser una funcion que busque una palabra en una oracion dentro de un texto por ejemplo
//no es code real
char *t[/*SIZE*/] = "ORACION MUY LARGA Y TEDIOSA...";
funcion_BUSCA_PALABRA("MUY",t);
claro es un ejemplo ya que podrias definir un analisador lexico como otros tipo de funcion solo me refiero a algo basico.
otro seria lo que usan los compiladores para para revisar sintaxis.
como muchas gracias por todo