No me acuerdo que automatas use aqui… pero es una practica muy sencilla igual me sirvio para pasar el examen… no es en si, necesario aprender el codigo, sino mas bien comprenderlo, una vez comprendido el teclearlo va a estar mas que facil.

 

//—————————————
// clase Automata
//—————————————
class Automata
{
string _textoIma;
int _edoAct;

char SigCar(ref int i)
{
if (i == _textoIma.Length)
{
i++;
return ”;
}
else
return _textoIma[i++];
}

public bool Reconoce(string texto,int iniToken,ref int i,int noAuto)
{
char c;
_textoIma = texto;
string lenguaje;
switch (noAuto)
{
//————– Automata delim————–
case 0 : _edoAct = 0;
break;
//————– Automata id————–
case 1 : _edoAct = 3;
break;
//————– Automata car————–
case 2 : _edoAct = 6;
break;
//————– Automata cad————–
case 3 : _edoAct = 9;
break;
//————– Automata otros————–
case 4 : _edoAct = 13;
break;
}
while(i<=_textoIma.Length)
switch (_edoAct)
{
//————– Automata delim————–
case 0 : c=SigCar(ref i);
if ((lenguaje=” \t\n\r”).IndexOf(c)>=0) _edoAct=1; else
{ i=iniToken;
return false; }
break;
case 1 : c=SigCar(ref i);
if ((lenguaje=” \t\n\r”).IndexOf(c)>=0) _edoAct=1; else
if ((lenguaje=”!\”#$%&\'()*+,-./0123456789:;<=>?                @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿\f”).IndexOf(c)>=0) _edoAct=2; else
{ i=iniToken;
return false; }
break;
case 2 : i–;
return true;
break;
//————– Automata id————–
case 3 : c=SigCar(ref i);
if ((lenguaje=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”).IndexOf(c)>=0) _edoAct=4;                         else
if ((lenguaje=”_”).IndexOf(c)>=0) _edoAct=4; else
{ i=iniToken;
return false; }
break;
case 4 : c=SigCar(ref i);
if ((lenguaje=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”).IndexOf(c)>=0) _edoAct=4; else
if ((lenguaje=”_”).IndexOf(c)>=0) _edoAct=4; else
if ((lenguaje=”0123456789″).IndexOf(c)>=0) _edoAct=4; else
if ((lenguaje=” !\”#$%&\'()*+,-./:;<=>?@[\\]^`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿\n\t\r\f”).IndexOf(c)>=0) _edoAct=5; else
{ i=iniToken;
return false; }
break;
case 5 : i–;
return true;
break;
//————– Automata car————–
case 6 : c=SigCar(ref i);
if ((lenguaje=”0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz”).IndexOf(c)>=0) _edoAct=7; else
{ i=iniToken;
return false; }
break;
case 7 : c=SigCar(ref i);
if ((lenguaje=”\'”).IndexOf(c)>=0) _edoAct=8; else
{ i=iniToken;
return false; }
break;
case 8 : return true;
break;
//————– Automata cad————–
case 9 : c=SigCar(ref i);
if ((lenguaje=”\””).IndexOf(c)>=0) _edoAct=10; else
{ i=iniToken;
return false; }
break;
case 10 : c=SigCar(ref i);
if ((lenguaje=” 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\t\n\r”).IndexOf(c)>=0) _edoAct=11; else
{ i=iniToken;
return false; }
break;
case 11 : c=SigCar(ref i);
if ((lenguaje=”\””).IndexOf(c)>=0) _edoAct=12; else
if ((lenguaje=” 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\t\n\r”).IndexOf(c)>=0) _edoAct=11; else
{ i=iniToken;
return false; }
break;
case 12 : return true;
break;
//————– Automata otros————–
case 13 : c=SigCar(ref i);
if ((lenguaje=”;”).IndexOf(c)>=0) _edoAct=14; else
if ((lenguaje=”,”).IndexOf(c)>=0) _edoAct=14; else
if ((lenguaje=”[“).IndexOf(c)>=0) _edoAct=14; else
if ((lenguaje=”]”).IndexOf(c)>=0) _edoAct=14; else
{ i=iniToken;
return false; }
break;
case 14 : return true;
break;
}
switch (_edoAct)
{
case 2 : // Autómata delim
case 5 : // Autómata id
–i;
return true;
}
return false;
}

} // fin de la clase Automata