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 :