Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/04/2014, 07:42
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 11 meses
Puntos: 61
Respuesta: Analizador lexico

La idea indicada, en pocas lineas.
Los separadores que uso: el espacio en blanco, el tab y el cambio de linea. No uso comas o numeros, pero supongo que puedes extender facilmente para los otros separadores que quieras incorporar.

Código C++:
Ver original
  1. // Estado es una enum
  2.    Estado estado = FUERA;
  3.    string palabra = "";
  4.  
  5.    unsigned int i = 0;
  6.    char c;
  7.    while(( c = leer_caracter(s,i) ) != 0 ) {
  8.        switch( estado ) {
  9.          case FUERA:
  10.                  if( c != ' ' && c != '\t' && c != '\n' ) { // etcetera
  11.                      estado = DENTRO;
  12.                      palabra = c;
  13.                  }
  14.                  break;
  15.          case DENTRO:
  16.                  if( c == ' ' || c == '\t' || c == '\n' ) { // etcetera
  17.                      estado = FUERA;
  18.                      // se acabo la palabra, tiempo de hacer algo con ella
  19.                      cout << "Palabra = " << palabra << endl;
  20.                  }
  21.                  else
  22.                      palabra += c;
  23.                  break;
  24.          }
  25.       ++i;
  26.    }
  27.    // revisar estado al final
  28.    if( estado == DENTRO ) {
  29.        cout << "Palabra final = " << palabra << endl;
  30.    }
Puedes ver este mismo codigo ejecutandose aqui: http://goo.gl/OT36MN
__________________
Visita mi perfil en LinkedIn