#include
#include
#include
#include
#include
int funcion_evaluar_cadena(char cadena[20],int linea);
int funcion_evaluar_linea(int linea[50][2],int lineas,int y);
int funcion_evaluar_id(char cadena[20], int linea);
char palabras_reservadas[12][17]=
{
{'w','h','i','l','e'},{'i','f'},{'v','a','r'},{'e','l','s','e'},{'f','o','r'},{'c','a','s','e'},{'b','r','e','a','k'},{'s','c','r','i','p','t'},{'/','s','c','r','i','p','t'},
};
char tabla_transiones_identificadores[3][2]=
{
{0, 0},
{2, 0},
{2, 2},
};
char tabla_transiones_logicos[5][4]=
{
{0, 0, 0, 0},
{2, 2, 4, 4},
{0, 0, 3, 0},
{0, 0, 0, 0},
{0, 0, 3, 0},
};
char operadores_logicos[4]={'<','>','=','!'};
char operadores_matematicos[4]={'/','*','-','+'};
char abc[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char fin_linea=';';
char flujo_out[2]={'<','<'};
char flujo_in[2]={'>','>'};
char llaves[2] ={'{','}'};
char parentesis[2]={'(',')'};
char digito[10]={'0','1','2','3','4','5','6','7','8','9'};
char comillas={'"'};
char cadena[50][20];
int n_cadena[50][6];
char lista_identificador[20][30];
int linea_identificador[20];
int tipo_identificador[20];
int li=0;
int nop=0;
void main()
{
cout<
ifstream archivo("progra.txt", ios::in);
char var;
int x=0,y=0;
int tok=0;
int linea=1;
int linea_q[50][2];
while(!archivo.eof())
{
archivo.get(var);
if(var==' '||var=='\n')
{
x=0;
linea_q[y][1]=funcion_evaluar_cadena(cadena[y],linea);
cout<<"\t\tNumero de Linea "<
if(var=='\n')
linea++;
y++;
}
else
{
cadena[y][x]=var;
cout<
}
}
cout<<"-------------------------------------------------------------------"<
funcion_evaluar_linea(linea_q,linea,y);
cout<<" Variables "<
if(tipo_identificador[g]>0)
{
cout<<"La variable ";
int d =strlen(lista_identificador[g]);
for(int c=0; c
cout<
cout<<" es de tipo ";
if(tipo_identificador[g]==1)
{
cout<<"entero";
}
else
if(tipo_identificador[g]==2)
{
cout<<"string";
}
cout<
}
}
//-------------------------------------------------------------------------------------------------------------
void azu()
{
ifstream archivo("progra.txt", ios::in);
char var;
int x=0,y=0;
int tok=0;
int linea=1;
char cadena[50][20];
char info_cadena[50];
while(!archivo.eof())
{
archivo.get(var);
if(var==' '||var=='\n')
{
x=0;
funcion_evaluar_id(cadena[y],linea);
cout<<"\t\tNumero de Linea "<
if(var=='\n')
linea++;
y++;
}
else
{
cadena[y][x]=var;
cout<
}
}
}
/////______________________________________________________
int funcion_evaluar_id(char cadena[20], int linea)
{
int apunta=1,dir=2;
int t=strlen(cadena);
int sim=0;
int x, y;
for( x=0; x
dir=2;
for( y=0; y<26;y++)
{
if(abc[y]==cadena[x])
{
dir=0;
y=30;
}
}
for( int z=0; z<10;z++)
{
if(digito[z]==cadena[x])
{
dir=1;
y=30;
}
}
if(dir==2)
{
apunta=0;
}
else
{
apunta=tabla_transiones_identificadores[apunta][dir];
}
}
if(apunta==2)
{
cout<<"\t\tEs_Identificador";
for(int q=0; q
lista_identificador[li][q]=cadena[q];
}
linea_identificador[li]=linea;
li++;
return 21;
}
}
//_______________________________________________________________________________________________________________
int funcion_evaluar_cadena(char cadena[20], int linea)
{
int t=strlen(cadena);
int sim=0;
int x, y;
if(t==1)
{
char var=cadena[0];
char var1=cadena[0];
char var2=cadena[0];
if(cadena[0]==fin_linea)
{
cout<<"\t\tFin de Sentencia";
return 20;
}
for( x=0; x<4; x++)
{
if(operadores_matematicos[x]==var)
{
cout<<"\t\tOpe. Matematico ";
return 13;
}
}
for( x=0; x<2; x++)
{
if(llaves[x]==cadena[0])
{
cout<<"\t\tEs una Llave";
return 14+x;
}
}
if('='==cadena[0])
{
cout<<"\t\tes un operador matematico";
return 16;
}
for( x=0; x<2; x++)
{
if(parentesis[x]==cadena[0])
{
cout<<"\t\tEs un Parentesis ";
return 17+x;
}
}
}
sim=0;
int nofun=0;
for( x=0; x
nofun++;
for( y=0; y<10;y++)
{
if(cadena[x]==digito[y])
{
sim++;
y=100;
}
else
nofun++;
}
if(nofun==10)
x=100;
}
if(sim==t)
{
cout<<"\t\tEsto es un Numero";
return 19;
}
for( x=0; x<12; x++)
{
sim=0;
for( y=0; y
if(cadena[y]==palabras_reservadas[x][y])
{
sim++;
}
}
int ta=strlen(palabras_reservadas[x]);
if(sim==ta&&t==sim)
{
cout<<"\t\tPalabra_Reservada";
//if(x==0||x==1||x==3||x==4)
//cout<<" *Compatible con c*";
return x+1;
}
}
int apunta=1,dir=2;
for( x=0; x
dir=2;
for( y=0; y<26;y++)
{
if(abc[y]==cadena[x])
{
dir=0;
y=30;
}
}
for( int z=0; z<10;z++)
{
if(digito[z]==cadena[x])
{
dir=1;
y=30;
}
}
if(dir==2)
{
apunta=0;
}
else
{
apunta=tabla_transiones_identificadores[apunta][dir];
}
}
if(apunta==2)
{
cout<<"\t\tEs_Identificador";
for(int c=0; c
lista_identificador[nop][c]=cadena[c];
}
nop++;
return 21;
}
int igu=0;
if(cadena[0]=='"'&&cadena[t-1]=='"')
{
for(int f=1; f
for(int z=0; z<26;z++)
{
if(cadena[f]==abc[z])
{
igu++;
}
}
}
if(igu==t-2)
{
cout<<"\t\tIdentificador Cadena"<
}
}
int azu=0;
for(int w=1; w
for(int z=0; z<10; z++)
{
if(cadena[w]==digito[z])
{
azu++;
}
}
}
if(azu==t)
{
cout<<"\t\tIdentificador numerico"<
}
apunta=1,dir=2;
for( x=0; x
dir=10;;
for( y=0; y<4;y++)
{
if(operadores_logicos[y]==cadena[x])
{
dir=y;
}
}
if(dir==10)
{
apunta=0;
}
else
{
apunta=tabla_transiones_logicos[apunta][dir];
}
}
int st=strlen(cadena);
if(st==1)
{
if(cadena[0]=='<')
{
return 23;
}
if(cadena[0]=='>')
{
return 24;
}
}
if(apunta==2||apunta==3)
{
cout<<"\t\tEs un Operador Logico ";
return 22;
}
cout<<"\tError no es token";
return 0;
}
/////.......................................................
int funcion_evaluar_linea(int linea[50][2],int lineas,int y)
{
int are[15][16];
int tom[15];
int ev_lin[15];
int metric=0;
for(int p=0; p<=lineas; p++)
{int tam=0;
for(int k=0; k
{
are[p][tam]=linea[k][1];
tam++;
}
tom[p]=tam;
if(tom[p]==3)
{
if(are[p][0]==23)
if(are[p][1]==8)
if(are[p][2]==24)
{
cout<<"Etiqueta de inicio "<
metric++;
}
if(are[p][0]==23)
if(are[p][1]==9)
if(are[p][2]==24)
{
cout<<"Etiqueta de fin "<
metric++;
}
}
if(tom[p]==4)
{
if(are[p][0]==21)
if(are[p][1]==16)
if(are[p][2]==21)
if(are[p][3]==20)
{
cout<<"Expresion matematica "<
metric++;
}
}
if(tom[p]==6)
{
if(are[p][0]==21)
if(are[p][1]==16)
if(are[p][2]==19)
if(are[p][3]==13)
if(are[p][4]==21)
if(are[p][5]==19)
{
cout<<"Operacion matematica "<
metric++;
// cout<<"
}
if(are[p][0]==2)
if(are[p][1]==17)
if(are[p][2]==21||are[p][2]==19)
if(are[p][3]==22||are[p][3]==23||are[p][3]==24)
if(are[p][4]==21||are[p][4]==19)
if(are[p][5]==18)
{
cout<<"Inicia if"<
metric++;
}
if(are[p][0]==1)
if(are[p][1]==17)
if(are[p][2]==21||are[p][2]==19)
if(are[p][3]==22||are[p][3]==23||are[p][3]==24)
if(are[p][4]==21||are[p][4]==19)
if(are[p][5]==18)
{
cout<<"Inicia while"<
metric++;
}
}
if(tom[p]==5)
{
if(are[p][0]==3)
if(are[p][1]==21)
if(are[p][2]==16)
if(are[p][3]==19)
if(are[p][4]==20)
{
cout<<"Declaracion de variable de tipo entero "<
metric++;
tipo_identificador[li]=1;
li++;
}
}
if(tom[p]==5)
{
if(are[p][0]==3)
if(are[p][1]==21)
if(are[p][2]==16)
if(are[p][3]==25)
if(are[p][4]==20)
{
cout<<"Declaracion de variable de tipo string "<
metric++;
tipo_identificador[li]=2;
li++;
}
}
if(tom[p]==3)
{
if(are[p][0]==3)
if(are[p][1]==21)
if(are[p][2]==20)
{
cout<<"Declaracion de variable indefinida "<
metric++;
}
}
if(tom[p]==16)
{
if(are[p][0]==5)
if(are[p][1]==17)
if(are[p][2]==21)
if(are[p][3]==16)
if(are[p][4]==21||are[p][4]==19)
if(are[p][5]==20)
if(are[p][6]==21||are[p][6]==19)
if(are[p][7]==22||are[p][7]==23||are[p][7]==24)
if(are[p][8]==21||are[p][8]==19)
if(are[p][9]==20)
if(are[p][10]==21)
if(are[p][11]==16)
if(are[p][12]==21||are[p][12]==19)
if(are[p][13]==13)
if(are[p][14]==21||are[p][14]==19)
if(are[p][15]==18)
{
cout<<"inicio de for "<
metric++;
}
}
if(tom[p]==1)
{
if(are[p][0]==14)
{
cout<<"llave de inicio "<
metric++;
}
if(are[p][0]==15)
{
cout<<"llave de fin "<
metric++;
}
if(are[p][0]==4)
{
cout<<"llave de fin "<
metric++;
}
}
}
int eti_ini=0;
int eti_fin=0;
int c_mat=0;
int if_ini=0;
int while_ini=0;
int c_var=0;
int for_ini=0;
int llave_inicio=0;
int llave_fin=0;
int c_else=0;
if(ev_lin[metric-1]==2&&ev_lin[0]==1)
{
for(int w=0; w
if(ev_lin[w]==1)
{
//etiqueta de inicio
eti_ini++;
}
if(ev_lin[w]==2)
{
//etiqueta de inicio
eti_fin++;
}
if(ev_lin[w]==3)
{
//etiqueta de inicio
c_mat++;
}
if(ev_lin[w]==4)
{
//etiqueta de inicio
if_ini++;
}
if(ev_lin[w]==5)
{
//etiqueta de inicio
while_ini++;
}
if(ev_lin[w]==6)
{
//etiqueta de inicio
c_var++;
}
if(ev_lin[w]==7)
{
//etiqueta de inicio
for_ini++;
}
if(ev_lin[w]==8)
{
//etiqueta de inicio
llave_inicio++;
}
if(ev_lin[w]==9)
{
//etiqueta de inicio
llave_fin++;
}
if(ev_lin[w]==10)
{
//etiqueta de inicio
c_else++;
}
if(llave_inicio
cout<<"error en las llaves"<
if(c_else>if_ini)
{
cout<<"error en la estructura if"<
}
if(llave_inicio>llave_fin||llave_inicio
cout<<"error en las llaves "<
}
if(c_else>if_ini)
{
cout<<"error en la sentencia if "<
}
}
else
{
cout<<"error rn las etiquetas de inicio y fin de script "<
return 0;
}
Programa en Javascript
< script >
var x = 15 ;
var y = "hola" ;
var z = 21 ;
for ( x = 10 ; x > 15 ; x = x + 1 )
{
}
if ( y == 21 )
{
}
< /script >
Resultado en Consola


