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:
Como se muestra en el código, saque provecho de la codificación ascii para que esto funcionara.//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; . . .
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