Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2014, 17:55
Avatar de Instru
Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 22 años
Puntos: 52
Reconocerdor lexico.

Hola todos de nuevo.
Tengo una inquitud, a ver si me pueden asesorar un poco.

Hace poco tiempo implemente un pequeño reconocedor léxico de un mini lenguaje. Lo hice en C.
Lo hice a mano, es decir, nada de lex ni flex. Para implementarlo, utilize una matriz de entradas/estados que llene de la siguiente manera.

Código:
//Fisrt all the character set.
    stateMatrix[1]['-']=1;
    for(input='A'; input<='Z'; ++input)
    {
        stateMatrix[1][input]=1;
    }
    for(input='a'; input<='z'; ++input)
    {
        stateMatrix[1][input]=1;
    }
    //Then all numbers
    for(input='0'; input<='9'; ++input)
    {
       stateMatrix[1][input]=1;
    }

    //Individual characters
    stateMatrix[0]['(']=PAR_A;
    stateMatrix[0][')']=PAR_C;
    stateMatrix[0]['[']=COR_A;
    stateMatrix[0][']']=COR_C;
    stateMatrix[0]['|']=OR;
    stateMatrix[0]['<']=1;
    stateMatrix[1]['>']=REGLA;
    stateMatrix[0][':']=2;
    stateMatrix[2][':']=3;
    stateMatrix[3]['=']=ASSIGN;
    stateMatrix[0]['"']=4;
    stateMatrix[4]['"']=TERMINAL;
.
.
.
Como se muestra en el código, saque provecho de la codificación ascii para que esto funcionara.

Ahora. Necesito implemetarlo en Python 3 sin usar re ni nada parecido. La idea es también hacerlo manualmente. El problema es que las cadenas de caracteres(string) en python ya usan unicode.

Para ser sincero, no quiero regresar al ascii, ya que eso impide cierto grado de portabilidad.

He estado pensando en alguna forma para hacerlo y pues solo se me ocurre la técnica de una larga lista de if-else.

Alguna idea de como tranformar este codigo en C a python??

Se los agradecería mucho.

Saludos