miércoles, 13 de enero de 2010

Analizador Lexicoooooo

Gramatica de D





este es el automata, la expresion regular y la tabla de transiciones





codigo del analizador


package pack;

import java.io.*;

/**
*
* @author PrInCeSsItA
*/
public class analizadord {
/*public static void main(String args[]) throws IOException
{
String pal;
try
{

BufferedReader p=new BufferedReader(new FileReader("intp.txt"));
while((pal=p.readLine())!=null){
st(pal);
}

}
catch(FileNotFoundException e)
{
System.out.println("Error de archivo");
}
}*/
public String st(String pal)
{
String nuca=pal;//+'$';
int val=nuca.length();
String valor=null;

int tt [][]=new int [5][28];
//[a-z] / { } * n(0-9) [ ] ( ) +
tt[0][0]=1; tt[0][1]=1; tt[0][2]=1; tt[0][3]=1; tt[0][4]=1; tt[0][5]=2; tt[0][6]=2; tt[0][7]=2; tt[0][8]=2; tt[0][9]=2; tt[0][10]=2;
tt[1][0]=1; tt[1][1]=1; tt[1][2]=1; tt[1][3]=1; tt[0][4]=1; tt[1][5]=1; tt[1][6]=1; tt[1][7]=1; tt[1][8]=1; tt[1][9]=1; tt[1][10]=1;
tt[2][0]=2; tt[2][1]=2; tt[2][2]=2; tt[2][3]=2; tt[0][4]=2; tt[2][5]=2; tt[2][6]=2; tt[2][7]=2; tt[2][8]=2; tt[2][9]=2; tt[2][10]=2;

// - = ~ _ ? " : . ; <
tt[0][11]=2; tt[0][12]=2; tt[0][13]=2; tt[0][14]=2; tt[0][15]=2; tt[0][16]=2; tt[0][17]=2; tt[0][18]=2; tt[0][19]=2; tt[0][20]=2;
tt[1][11]=1; tt[1][12]=1; tt[1][13]=1; tt[1][14]=1; tt[1][15]=1; tt[1][16]=1; tt[1][17]=1; tt[1][18]=1; tt[1][19]=1; tt[1][20]=1;
tt[2][11]=2; tt[2][12]=2; tt[2][13]=2; tt[2][14]=2; tt[2][15]=2; tt[2][16]=2; tt[2][17]=2; tt[2][18]=2; tt[2][19]=2; tt[2][20]=2;

// > , ^ & | # fc[$]
tt[0][21]=2; tt[0][22]=2; tt[0][23]=2; tt[0][24]=2; tt[0][25]=2; tt[0][26]=2; tt[0][27]=2;
tt[1][21]=1; tt[1][22]=1; tt[1][23]=1; tt[1][24]=1; tt[1][25]=1; tt[1][26]=1; tt[1][27]=1;
tt[2][21]=2; tt[2][22]=2; tt[2][23]=2; tt[2][24]=2; tt[2][25]=2; tt[2][26]=2; tt[2][27]=2;
/*Hola mundo*/
int est=0,col=0;
try
{
for(int a=0; a {
if (nuca.charAt(a) == ' ' || nuca.charAt(a) == '\n') continue;
if( nuca.charAt(a) >='a' && nuca.charAt(a) <='z' || nuca.charAt(a) >='A' && nuca.charAt(a) <='Z' )
{
col=0;
est=tt[est][col];
}
else if(nuca.charAt(a)=='/')
{
col=1;
est=tt[est][col];
}
else if(nuca.charAt(a)=='{')
{
col=2;
est=tt[est][col];
}
else if(nuca.charAt(a)=='}')
{
col=3;
est=tt[est][col];
}
else if(nuca.charAt(a)=='*')
{
col=4;
est=tt[est][col];
}
else if(nuca.charAt(a) >='0' && nuca.charAt(a) <='9' )
{
col=5;
est=tt[est][col];
}
else if(nuca.charAt(a)=='[')
{
col=6;
est=tt[est][col];
}
else if(nuca.charAt(a)==']')
{
col=7;
est=tt[est][col];
}
else if(nuca.charAt(a)=='(')
{
col=8;
est=tt[est][col];
}
else if(nuca.charAt(a)==')')
{
col=9;
est=tt[est][col];
}

else if(nuca.charAt(a)=='+')
{
col=10;
est=tt[est][col];
}
else if(nuca.charAt(a)=='-')
{
col=11;
est=tt[est][col];
}

else if(nuca.charAt(a)=='=')
{
col=12;
est=tt[est][col];
}

else if(nuca.charAt(a)=='~')
{
col=13;
est=tt[est][col];
}
else if(nuca.charAt(a)=='_')
{
col=14;
est=tt[est][col];
}
else if(nuca.charAt(a)=='?')
{
col=15;
est=tt[est][col];
}
else if(nuca.charAt(a)=='"')
{
col=16;
est=tt[est][col];
}

else if(nuca.charAt(a)==':')
{
col=17;
est=tt[est][col];
}
else if(nuca.charAt(a)=='.')
{
col=18;
est=tt[est][col];
}
else if(nuca.charAt(a)==';')
{
col=19;
est=tt[est][col];
}
else if(nuca.charAt(a)=='<')
{
col=20;
est=tt[est][col];
}
else if(nuca.charAt(a)=='>')
{
col=21;
est=tt[est][col];
}
else if(nuca.charAt(a)==',')
{
col=22;
est=tt[est][col];
}
else if(nuca.charAt(a)=='^')
{
col=23;
est=tt[est][col];
}
else if(nuca.charAt(a)=='&')
{
col=24;
est=tt[est][col];
}
else if(nuca.charAt(a)=='|')
{
col=25;
est=tt[est][col];
}
else if(nuca.charAt(a)=='#')
{
col=26;
est=tt[est][col];
}
else {

est=2;

}
if( est != 1 )
{System.out.println("Palabra no aceptada");
valor = "No es palabra valida";
}
else
{System.out.println("Palabra Valida");
valor = "Palabra Aceptada";
}
/*if(nuca.charAt(a)=='$')
{
nuca=pal;
col=27;

if(tt[est][col]==200)
{
//System.out.print(nuca +"\t Palabra valida\n");
valor="Palabra valida";
}
if(tt[est][col]==100)
{
//System.out.print(nuca +"\t Palabra valida\n");
valor="Palabra invalida";
}*/




}
}catch (ArrayIndexOutOfBoundsException exc){}
return valor;
}


}


Applet "Codigo del boton"

analizadord an = new analizadord();
//jTextField1.setText(an.st(jTextArea1.getText()));
jTextField1.setText(an.st(jTextArea1.getText()));

No hay comentarios:

Publicar un comentario