compilador en c++ parte5

COMPILADOR EN C++ PARTE 5

RECUERDA : haber ensamblado correctamente las primeras partes del proyecto para que el compilador corra perfectamente
Este es la ultima parte del compilador......



/**************************SIMBOLOS****************************/
        case 0x26:
          textattr(12);
          cprintf("&");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           else
           {
         strcpy(registro[c].total,"&");
         c=c+1;
         x=x+1;
         son=0;
           }
           break;
        case 0x24:
          textattr(12);
          cprintf("$");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           s3++;
           strcpy(registro[contsim].simbolos,"$");
           contsim=contsim+1;
           x=x+1;
           son=0;
           break;
        case 0x22:
        cout<<"''";
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         strcpy(registro[c].total,"''");
         c=c+1;
         x=x+1;
         son=0;
           }
           else
           {
         strcpy(registro[c].total,"''");
         c=c+1;
         x=x+1;
         son=0;
           }
           break;
        case 0x2A:
          textattr(WHITE);
          cprintf("*");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
        strcpy(registro[contope].operadores,"*");
        contope=contope+1;
        x=x+1;
        son=0;
        break;
        case 0x2B:
          textattr(WHITE);
          cprintf("+");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           strcpy(registro[contope].operadores,"+");
           contope=contope+1;
           x=x+1;
           son=0;
           break;
        case 0x2C:
          cout<<",";
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         strcpy(registro[c].total,",");
         c=c+1;
         x=x+1;
         son=0;
           }
           else
           {
        strcpy(registro[c].total,",");
        c=c+1;
        x=x+1;
        son=0;
           }
           break;
        case 0x2D:
          textattr(WHITE);
          cprintf("-");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
        }
           strcpy(registro[contope].operadores,"-");
           contope=contope+1;
           x=x+1;
           son=0;
           break;
        case 0x2E:
          textattr(12);
          cprintf(".");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         strcpy(registro[c].total,".");
         c=c+1;
         x=x+1;
         son=0;
        }
           else
           {
        strcpy(registro[c].total,".");
        c=c+1;
        x=x+1;
        son=0;
           }
           break;
        case 0x2F:
          textattr(WHITE);
          cprintf("/");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           strcpy(registro[contope].operadores,"/");
           contope=contope+1;
           x=x+1;
           son=0;
           break;
        case 0x3A:
          textattr(12);
          cprintf(":");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           strcpy(registro[contsim].simbolos,":");
           contsim=contsim+1;
           x=x+1;
           son=0;
           break;
        case 0x3D:
        textattr(12);
        cprintf("=");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           strcpy(registro[contope].operadores,"=");
           contope=contope+1;
           x=x+1;
           son=0;
           break;
        case 0x3B:
          textattr(12);
          cprintf(";");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         strcpy(registro[c].total,";");
         c=c+1;
         x=x+1;
         son=0;
        }
           else
           {
         strcpy(registro[c].total,";");
         c=c+1;
         x=x+1;
         son=0;
        }
           break;
        case 0x3C:
          textattr(12);
          cprintf("<");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         strcpy(registro[c].total,"<");
         c=c+1;
         x=x+1;
         son=0;
        }
           else
           {
         strcpy(registro[c].total,"<");
         c=c+1;
         x=x+1;
         son=0;
        }
           break;
        case 0x3E:
        textattr(12);
        cprintf(">");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         strcpy(registro[c].total,">");
         c=c+1;
         x=x+1;
         son=0;
        }
           else
           {
         strcpy(registro[c].total,">");
         c=c+1;
         x=x+1;
         son=0;
        }
           break;
        case 0x7B:
          textattr(12);
          cprintf("{");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
         strcpy(registro[contsim].simbolos,"{");
         contsim=contsim+1;
         s1++;
         x=x+1;
         son=0;
           break;
        case 0x7D:
          textattr(12);
          cprintf("}");
           if(son!=0)
           {
         strncpy(registro[c].total,cad,p);
         p=0;
         c=c+1;
         son=0;
           }
           strcpy(registro[contsim].simbolos,"}");
           contsim=contsim+1;
           s2++;
           x=x+1;
           son=0;
           break;

        case 0xD:y=y+1;
          if(son==1)
          {
         strncpy(registro[c].total,cad,p);
         c=c+1;
         x=1;
         p=0;
         son=0;
           }
           else
           {
         x=1;
           }
           break;
        case 0x20:cout<<" ";
           if(son==1)
           {
         strncpy(registro[c].total,cad,p);
         c=c+1;
         x=x+1;
         p=0;
         son=0;
           }
           else
           {
        x=x+1;
           }
           break;
        case 0x8:
          x=x-1;
          gotoxy(x,y);
          cout<<" ";
          p=p-1;
           if(son==0)
           {
        c=c-1;
           }
           break;
        case 0x1B:
           break;
           default:
           break;
     }
     if(x>80)
     {
      x=1;
      y=y+1;
     }
     if(son!=0&&aux==0x1b)
     {
       strncpy(registro[c].total,cad,p);
     }
    }while(aux!=0x1B);
      char *clave1="INICIO",
       *clave2="VAR",
       *clave3="FINALIZAR",
       *clave4="EJECUTAR";
      int tam,c2=0,c1=0,c4=0,c3=0;
      clrscr();

      for(int i=0;i<=c;i++)
      {
    tam=strlen(registro[i].total);
     switch(tam)
     {
      case 1:
        if(strcmp(registro[i].total,"a")==0)
          {
           strcpy(registro[contvari].variables,registro[i].total);
           contvari=contvari+1;
          }
        else
        {
        if(strcmp(registro[i].total,"e")==0)
        {
          strcpy(registro[contvari].variables,registro[i].total);
          contvari=contvari+1;
        }
        else
        {
            if(strcmp(registro[i].total,"i")==0)
            {
              strcpy(registro[contvari].variables,registro[i].total);
              contvari=contvari+1;
            }
            else
            {
              if(strcmp(registro[i].total,"o")==0)
              {
            strcpy(registro[contvari].variables,registro[i].total);
            contvari=contvari+1;
              }
              else
              {
            if(strcmp(registro[i].total,"u")==0)
            {
              strcpy(registro[contvari].variables,registro[i].total);
              contvari=contvari+1;
            }
            else
            {
              strcpy(registro[conterror].error,registro[i].total);
              conterror=conterror+1;
            }
               }
              }
            }
        }
             break;
        case 3:if(strcmp(registro[i].total,clave2)==0)
           {
             strcpy(registro[contclave].p_clave,registro[i].total);
             contclave=contclave+1;
             c2++;
           }
           else
           {
             strcpy(registro[conterror].error,registro[i].total);
             conterror=conterror+1;
           }
            break;
        case 9:if(strcmp(registro[i].total,clave3)==0)
           {
             strcpy(registro[contclave].p_clave,registro[i].total);
             contclave=contclave+1;
             c3++;
           }
           else
           {
             strcpy(registro[conterror].error,registro[i].total);
             conterror=conterror+1;
           }
           break;
        case 7:if(strcmp(registro[i].total,clave1)==0)
           {
             strcpy(registro[contclave].p_clave,registro[i].total);
             contclave=contclave+1;
             c1++;
           }
           else
           {
             strcpy(registro[conterror].error,registro[i].total);
             conterror=conterror+1;
           }
           break;
        case 8:if(strcmp(registro[i].total,clave4)==0)
           {
             strcpy(registro[contclave].p_clave,registro[i].total);
             contclave=contclave+1;
             c4++;
           }
           else
           {
             strcpy(registro[conterror].error,registro[i].total);
             conterror=conterror+1;
           }
           break;
        default:strcpy(registro[conterror].error,registro[i].total);
            conterror=conterror+1;
            break;
         }
        }
      x=1;y=2;
      for( x=1;x<=80;x++)
      {gotoxy(x,y);
       cout<<"-";
       }
       x=1;y=3;

      gotoxy(x,y-2);
      cout<<"P_CLAVES";
      for(i=0;i<contclave;i++)
      {
     gotoxy(x,y+i);
     cout<<registro[i].p_clave;
      }
      for(int  l=1;l<=30;l++)
      {gotoxy(x+9,l);
       cout<<"|";
       }
      gotoxy(x+10,y-2);
      cout<<"VARIABLES";
      for(i=0;i<=contvari;i++)
      {
     gotoxy(x+13,y+i);
     cout<<registro[i].variables;
      }
      for( l=1;l<=30;l++)
      {gotoxy(x+21,l);
       cout<<"|";
       }
      gotoxy(x+23,y-2);
      cout<<"DIGITO";
      for(i=0;i<contnum;i++)
      {
     gotoxy(x+23,y+i);
     cout<<registro[i].numeros;
      }
      for( l=1;l<=30;l++)
      {gotoxy(x+31,l);
       cout<<"|";
       }
      gotoxy(x+33,y-2);
      cout<<"OPE";
      for(i=0;i<=contope;i++)
      {
     gotoxy(x+33,y+i);
     cout<<registro[i].operadores;
      }
       for( l=1;l<=30;l++)
      {gotoxy(x+38,l);
       cout<<"|";
       }
      gotoxy(x+40,y-2);
      cout<<"SIMB";
      for(i=0;i<contsim;i++)
      {
     gotoxy(x+40,y+i);
     cout<<registro[i].simbolos;
      }
      //MANEJO DE ERRORES

      for(int ax=1;ax<=45;ax++)
      {gotoxy(ax,30);
       cout<<"-";
       }


       for( l=1;l<=30;l++)
      {gotoxy(x+44,l);
       cout<<"|";
       }
      gotoxy(x+46,y-2);
      cout<<"ERRORES";
      int j=0;
      for(i=0;i<conterror;i++)
      {
     gotoxy(x+45,y+i);
     cout<<registro[i].error;
     j++;
      }
      if(c1!=1)
      {
    gotoxy(x+45,y+j);
    cout<<"PALABRA CLAVE "<<clave1<<" NO ASIGNADA";
    j++;
    conterror=conterror++;
      }
      if(c2==1)
      {
    gotoxy(x+45,y+j);
    cout<<"PALABRA CLAVE "<<clave2<<" NO ASIGNADA";
    j++;
    conterror=conterror++;
      }
      else
      {
    if(c2==0)
    {
      gotoxy(x+45,y+j);
      cout<<"VARIABLES NO INICIALIZADAS ";
      j++;
      conterror=conterror++;
    }
      }
      if(c3!=1)
      {
    gotoxy(x+45,y+j);
    cout<<"PALABRA CLAVE "<<clave3<<" NO ASIGNADA";
    j++;
    conterror=conterror++;
      }
      if(c4!=1)
      {
    gotoxy(x+45,y+j);
    cout<<"PALABRA CLAVE "<<clave4<<" NO ASIGNADA";
    j++;
    conterror=conterror++;
      }
     if(s3<3)
     {
    gotoxy(x+45,y+j);
    cout<<"SIMBOLO FALTANTE "<<"$";
    j++;
    conterror++;
     }
     if(s1!=1)
     {
    gotoxy(x+45,y+j);
    cout<<"SIMBOLO FALTANTE "<<"{";
    j++;
    conterror++;
     }
     if(s2!=1)
     {
    gotoxy(x+45,y+j);
    cout<<"SIMBOLO FALTANTE "<<"}";
    j++;
    conterror++;
     }
     gotoxy(47,30);
    int miau=conterror;
      cout<<"!!!!USTED TIENE "<<miau<<" ERRORES  ";
      getch();
      clrscr();
      //EJECUCION DE OPERACIONES
     if(conterror==0)
     {
      for(i=0;i<contope;i++)
      {
       if(strcmp(registro[i].operadores,"+")==0)
    {
      gotoxy(2,y+2);
      cout<<"SUMA = "<<pri+seg;
    }
    if(strcmp(registro[i].operadores,"-")==0)
    {
      gotoxy(2,y+2);
      cout<<"RESTA = "<<pri-seg;
    }
    if(strcmp(registro[i].operadores,"*")==0)
    {
        gotoxy(2,y+2);
        cout<<"MULTIPLICACION = "<<pri*seg;
    }
    if(strcmp(registro[i].operadores,"/")==0)
    {
       gotoxy(2,y+2);
       cout<<"DIVISION = "<<float(pri/seg);
    }
      }
     }
    getch();
   }







No hay comentarios:

Publicar un comentario

Tienes dudas y consultas sobre como posicionar una pagina web en google en primeros lugares.

Consulta con Nosotros :

 

Seo / Posicionamiento Web