-   
-   
- #include<stdio.h> 
- #include<conio.h> 
- #include<string.h> 
- #include<stdlib.h> 
- #include<ctype.h> 
- #include <windows.h> 
- #include <math.h> 
- #include <dos.h> 
-   
- int Sigue,Tamano,Cont,PosIni,i,PosVec,j,PosParen,Error,CanTonk,Tamano2,k,Opcion; 
- char string[150],CadenaLeida[150],Bloques[50][150],SiFor[150],Tokens[50][150],NuevaCadena[150]; 
- int pIni; 
-   
- int EsOperador(char QueAnalizar) 
- {if (QueAnalizar=='+') 
-  {return(1);} 
-  else if (QueAnalizar=='-') 
-  {return(1);} 
-  else if (QueAnalizar=='*') 
-  {return(1);} 
-  else if (QueAnalizar=='/') 
-  {return(1);} 
-  else if (QueAnalizar=='(') 
-  {return(2);} 
-  else if (QueAnalizar==')') 
-  {return(2);} 
-  else if (QueAnalizar=='[') 
-  {return(2);} 
-  else if (QueAnalizar==']') 
-  {return(2);} 
-  else if (QueAnalizar=='<') 
-  {return(3);} 
-  else if (QueAnalizar=='>') 
-  {return(3);} 
-  else if (QueAnalizar=='=') 
-  {return(3);} 
-  else if (QueAnalizar=='!') 
-  {return(3);} 
-  else 
-  {return(0);} 
- } 
-   
- void EsFor() 
- {printf("nntDigite la sentencia que desea evaluar: "); 
- //Leer la cadena de caracteres que se va a evaluar. 
- // scanf("%s",CadenaLeida); 
- gets(string); 
-  printf("nCadena leida Completa: %s",string); 
-  int i; 
-   int j; 
-   
-    for (i = j = 0; string[i] != ' '; i++) 
-       if (string[i] != ' ') 
-      string[j++] = string[i]; 
-      string[j] = ' '; 
-        printf("nCadena  sin  Espacios: %s", string); 
- strcpy(CadenaLeida, string); 
- //printf("n Cadena Final : %s ",CadenaLeida); 
- //getche(); 
-  //Tomar el tama¤o de la cadena. 
-  Tamano=strlen(CadenaLeida); 
-  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-  //  Recorrer los caracteres de la cadena le¡da para reconocer si es una sentencia. 
-  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-  PosParen=0; 
-  for(i=0;i<=Tamano-1;i++) 
-  {//Si el caracter es un '('. 
-   if(CadenaLeida[i]=='(') 
-   {PosVec=0; 
-    for(j=0;j<=i-1;j++) 
-    {SiFor[PosVec]=CadenaLeida[j]; 
-     PosVec=PosVec+1; 
-    } 
-    PosParen=i; 
-    break; 
-   } 
-  } 
-  //------------------------------------------------------------------------------- 
-  //Si se han producido errores. 
-  if(PosParen!=3) 
-  {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); 
-   printf("ntError: %s", SiFor); 
-  } 
-  else if (strcmp(SiFor,"for")!=0) 
-  {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); 
-   printf("ntError: %s", SiFor); 
-  } 
-  else if (CadenaLeida[Tamano-1]!=')') 
-  {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n FOR"); 
-   printf("ntError: %c falta par‚ntesis de cierre final", CadenaLeida[Tamano-1]); 
-  } 
-  else 
-  {Cont=0; 
-   PosIni=4; 
-   //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-   // Recorrer los car cteres de la cadena le¡da para reconocer los bloques del for. 
-   //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-   for(i=4;i<=Tamano-2;i++) 
-   {//Si el caracter es un ';' 
-    if(CadenaLeida[i]==';') 
-    {PosVec=0; 
-     //Guardar parte de la cadena en otra variable. 
-     for(j=PosIni;j<=i;j++) 
-     {Bloques[Cont][PosVec]=CadenaLeida[j]; 
-      PosVec=PosVec+1; 
-     } 
-     Cont=Cont+1; 
-     PosIni=i+1; 
-    } 
-   } 
-   //Guardar parte de la cadena en otra variable. 
-   PosVec=0; 
-   for(j=PosIni;j<=Tamano-2;j++) 
-   {Bloques[Cont][PosVec]=CadenaLeida[j]; 
-    PosVec=PosVec+1; 
-   } 
-   //--------------------------------------------------------------------------- 
-   //Si se han producido errores. 
-   if (Cont<2) 
-   {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n for"); 
-    printf("ntError: faltan bloques del for 'for([init-expr];[cond-expr];[loop-expr])'"); 
-   } 
-   else if (Cont!=2) 
-   {printf("ntLa cadena digitada no cumple con la s¡ntaxis de la intrucci¢n for"); 
-    printf("ntError: hay mas de 3 bloques para el for 'for([init-expr];[cond-expr];[loop-expr])'"); 
-   } 
-   else 
-   {//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
-    //Identificar los tokens existentes dentro de los bloques del for. 
-    //Almacenar los primero Tokens. 
-    strcpy(Tokens[0],SiFor); 
-    Tokens[1][0]=CadenaLeida[3]; 
-    CanTonk=1; 
-    //Recorrer todos los Bloques. 
-    for(i=0;i<=Cont;i++) 
-    {//Limpiar la variable NuevaCadena. 
-     PosVec=0; 
-     for(k=0;k<=149;k++) 
-     {NuevaCadena[k]=0;} 
-     //Tomar el tamano del bloque actual. 
-     Tamano2=strlen(Bloques[i])-1; 
-     //Buscar los Tokens del Bloque Actual. 
-     for(j=0;j<=Tamano2;j++) 
-     {if(EsOperador(Bloques[i][j])==0 && Bloques[i][j]!=';') 
-      {NuevaCadena[PosVec]=Bloques[i][j]; 
-       PosVec=PosVec+1; 
-      } 
-      else 
-      {if (strlen(NuevaCadena)!=0) 
-       {CanTonk=CanTonk+1; 
-        for(k=0;k<=PosVec;k++) 
-        {Tokens[CanTonk][k]=NuevaCadena[k];} 
-        //Limpiar la variable NuevaCadena. 
-        PosVec=0; 
-        for(k=0;k<=149;k++) 
-        {NuevaCadena[k]=0;} 
-       } 
-       CanTonk=CanTonk+1; 
-       Tokens[CanTonk][0]=Bloques[i][j]; 
-      } 
-     } 
-    } 
-    if (strlen(NuevaCadena)!=0) 
-    {CanTonk=CanTonk+1; 
-     for(k=0;k<=PosVec;k++) 
-     {Tokens[CanTonk][k]=NuevaCadena[k];} 
-     //Limpiar la variable NuevaCadena. 
-     PosVec=0; 
-     for(k=0;k<=149;k++) 
-     {NuevaCadena[k]=0;} 
-    } 
-    CanTonk=CanTonk+1; 
-    Tokens[CanTonk][0]=41; //Ascii=')' 
-    //--------------------------------------------------------------- 
-    printf("nntNUMERO IDENTIFICADOS"); 
-    for(i=0;i<=CanTonk;i++) 
-    {if (strlen(Tokens[i])>0) 
-     {printf("nt%dt%s",i+1,Tokens[i]);} 
-     else 
-     {printf("nt%dt%c",i+1,Tokens[i]);} 
-     {printf("ttOK VALIDADO..!!!");} 
-    } 
-   } 
-  } 
- } 
-   
- main() 
- {Sigue=0; 
-  do 
-  { 
-   system("cls"); 
- // clrscr(); 
-   printf("nntttPROGRAMA    QUE    VALIDA"); 
-   printf("nntttCICLO FORnn"); 
-   printf("nnttt1.ANALIZAR CICLO FORnnn"); 
-   printf("nntttDIGITE OPCION: "); 
-   scanf("%d", &Opcion); 
- //  flushall(); 
- fflush(stdin);  
-   for(i=0;i<=149;i++) 
-   {CadenaLeida[i]=0; 
-    SiFor[i]=0; 
-   } 
- //  for(i=0;i<=49;i++) 
- //  {for(j=0;j<=149;j++) 
- //   {Bloques[i][j]=0; 
- //    Tokens[i][j]=0; 
- //   } 
- //  } 
-   if(Opcion==1) 
-   {EsFor(); 
-    printf("nnntEJECUTA EL PROGRAMA NUEVAMENTE?? [SI=1][NO=0]: "); 
-    scanf("%d",&Sigue); 
-   } 
-   else 
-   {printf("nnError digite una opci¢n valida.");} 
-  }while(Sigue!=0); 
- } 
-   
-   
-