Vous êtes sur la page 1sur 8

import import import import import import import import import import import import import

java.awt.Color; java.awt.TextArea; java.awt.event.ActionEvent; java.awt.event.ActionListener; java.io.BufferedReader; java.io.File; java.io.FileReader; java.util.StringTokenizer; javax.swing.JButton; javax.swing.JFrame; javax.swing.JOptionPane; javax.swing.JScrollPane; javax.swing.JTextArea;

public class NewClass extends JFrame{ JButton Palabras,Operadores,Operadores_comparacion,analizar; TextArea impri=new TextArea(); TextArea mostrar=new TextArea(); //espanol v=new espanol(); static String al=""; String[] vectipovalor= {"entero","largo","caracter","flotante","doble"," corto","booleano","Cadena","cuerpo","byte","Objeto"}; String [] vecsubestructura={}; // String[] vecpalabrasreservadas={"class","public","static","main","break" ,"try","catch","equals","index","replace","BufferedReader","StringBufer","insert ","match","charAt","length","getCharAt","valueOf","setCharAt","oppend","delete", "StrigTokenizer","readLine","System","out","print" // ,"private","return","new","finally","extends","JOptionpa ne","Show","MessageDialog","null","InputDialog","setText","getText","Integer","p arseInt","Double","parseDouble","io","getMessage","Runable","File","util","Array s"}; String[] vecpalabrasreservadas2={"clase","publico","estatico","menu","ro mper","intentar","catch","equals","index","replace","BufferedReader","StringBufe r","insertar","match","charAt","length","getCharAt","valueOf","setCharAt","oppen d","eliminar","StrigTokenizer","leerLinea","System","out","print" ,"privado","regresar","nuevo","finalmente","extender","P aneldeOpcion","mostrar","valor","DialogoEntrada","setText","getText","entero","c overtirnumEntero","Doble","convertirnumDecimal","io","getMessage","Runable","Arc hivo","util","Arrays" ,"importar","para","continuar","abstracto","caso","const ante","alcanzar","sino","porDefecto","hacer","numeracion" ,"final","ir","si","publica","implementar","nativo","int erface","paquete","protegido","regresar","MensajedeDialogo","super","mientras"," columna" ,"columnas","volatil","cadena"}; String[]vecutilerias={"javax","java","swing","awt"}; char[] vecnumeros={'0','1','2','3','4','5','6','7','8','9'}; String [] vecbooleano={"verdadero","falso"}; String[] vecsimbolosagrupacion= {"(",")","[","]","{","}","'"}; String []vecoperadoresdeasignacion={"="}; String [] vecoperadores={"+","-","*","/","%"}; String []veccomparacion={"<",">","!"};

String [] vecoperadoreslogicos={"|","&"}; String [] vecoperadoresaniveldebits={"<<",">>",">>>"}; String [] veccaracteresespeciales={"?",".",",",";",":","","`"}; char [] vecalterno={'"'}; String [][] tabla = new String[1][4]; int linea=0,fila=0,lineasintactica=0,posicion=0; String resultado=""; //String errores=""; String []vecequilibrados={" "}; boolean comilla=true; int valorrr=0; String [] variablesglobales= new String [1]; String [] tipoglobales=new String [1]; String [] variableslocales= new String [1]; String [] tipolocales=new String [1]; String cadenaextraida; public NewClass() { super("Analizador Lexico de SQL en Espaol"); getContentPane().setBackground(Color.red); setBounds(400, 350, 400, 400); setLayout(null); /////////////////// Palabras=new JButton("Cargar Programa"); //Palabras.setBounds(150, 20, 200, 40); Palabras.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method st ub impri.setText(""); File nombre=new File (JOptionPane.show InputDialog(null,"direccion")); if(nombre.exists()) {

} else{ JOptionPane.showMessageD ialog(null, "no existe", "ERROR", JOptionPane.ERROR_MESSAGE); } }

}); getContentPane().add(Palabras); impri.setBounds(50, 70, 400, 250); getContentPane().add(impri); mostrar.setBounds(50, 385, 400, 250); getContentPane().add(mostrar); analizar=new JButton("Analiza"); analizar.setBounds(50, 330, 100, 50); analizar.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { tabla = new String[1][4]; linea=0; fila=0; lineasintactica=0; posicion=0; resultado=""; vecequilibrados[0]=""; comilla=true; valorrr=0; cadenaextraida=impri.getText(); inicio(cadenaextraida); insertartablavisual(); } }); getContentPane().add(analizar); } public static void main (String args []) { try { NewClass pri=new NewClass(); pri.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// void asignacion(String cad, int line) { String tipo=""; tipo=verificacion(cad);

insertar(line,cad,tipo); } void inicio(String cad) { StringTokenizer sepdiagonaln= new StringTokenizer(cad,"\n",false ),sepespacios, cadsep; String renglon="",sepcadespacios="", ressep=""; while(sepdiagonaln.hasMoreTokens()) { linea++; renglon=sepdiagonaln.nextToken(); sepespacios=new StringTokenizer(renglon," ",false); while(sepespacios.hasMoreTokens()) { sepcadespacios=sepespacios.nextToken(); ressep=separacion(sepcadespacios); cadsep= new StringTokenizer(ressep," \t",false); while(cadsep.hasMoreTokens()) { asignacion(cadsep.nextToken(),linea); } } } } void insertartablavisual() { resultado+="linea"+"\t\t"+"token"+"\t\t\t"+"tipo"+"\t\t\t"+"\n"; for(int fil=0;fil<tabla.length;fil++) { if(fil!=tabla.length-1) resultado+=tabla[fil][0]+"\t\t"+tabla[fil][1]+"\t\t\t"+t abla[fil][2]+"\n"; } mostrar.setText(resultado); } ////////se separa el codigo String separacion(String cad) { String res=""; for(int c=0; c<cad.length();c++) { if((cad.charAt(c)>='a' && cad.charAt(c)<='z')||( cad.charAt(c)>='A' && cad.charAt(c)<='Z')||(cad.charAt(c)>='0' && cad.charAt(c)< ='9')||(cad.charAt(c)==' ')) res+=cad.charAt(c); else res+=" "+cad.charAt(c)+" "; } return res; } ///////////////insertar los valores a la tabla void insertar(int line,String token, String tipo) { for(int col=0;col<tabla[0].length;col++) { if(col==0)

tabla[fila][col]=line+""; else if(col==1) tabla[fila][col]=token+""; else if(col==2) tabla[fila][col]=tipo+""; else tabla[fila][col]="predeter"; } tabla=crecerdinamicamente(tabla); fila++; } String [][] crecerdinamicamente(String [][] matriz) { String [][] mataux= new String[(matriz.length+1)][4]; for(int fil=0;fil<matriz.length;fil++) { for(int col=0;col<matriz[0].length;col++) { mataux[fil][col]=matriz[fil][col]; } } return mataux; } ///////////////////////////////////////nos da el tipo de codigo String verificacion(String cad) { boolean seguir=true; String tipo=""; if(seguir==true) { for(int pos=0;pos<vecpalabrasreservadas2.length;pos++) { if(cad.equals(vecpalabrasreservadas2[pos])) { tipo="palabrareservada"; seguir=false; break; } } } if(seguir==true) { for(int pos=0;pos<vecutilerias.length;pos++) { if(cad.equals(vecutilerias[pos])) { tipo="utilerias"; seguir=false; break; } } } if(seguir==true) { for(int pos=0;pos<vectipovalor.length;pos++) { if(cad.equals(vectipovalor[pos])) { tipo="tipodato";

seguir=false; break; } } } if(seguir==true) { char numerito; for(int m=0;m<cad.length();m++) { numerito=cad.charAt(m); for(int pos=0;pos<vecnumeros.length;pos++) { if(numerito==vecnumeros[pos]) { tipo="numero"; seguir=false; break; } else { seguir=true; } } if(seguir==true) break; } } if(seguir==true) { for(int pos=0;pos<vecsimbolosagrupacion.length;pos++) { if(cad.equals(vecsimbolosagrupacion[pos])) { seguir=false; tipo="agrupacion"; break; } } } if(seguir==true) { for(int pos=0;pos<vecoperadoresdeasignacion.length;pos++ ) { if(cad.equals(vecoperadoresdeasignacion[pos])) { seguir=false; tipo="asignacion"; break; } } } if(seguir==true) {

for(int pos=0;pos<vecoperadores.length;pos++) { if(cad.equals(vecoperadores[pos])) { seguir=false; tipo="operadores"; break; } } } if(seguir==true) { for(int pos=0;pos<veccomparacion.length;pos++) { if(cad.equals(veccomparacion[pos])) { seguir=false; tipo="comparacion"; break; } } } if(seguir==true) { for(int pos=0;pos<vecoperadoreslogicos.length;pos++) { if(cad.equals(vecoperadoreslogicos[pos])) { seguir=false; tipo="logicos"; break; } } } if(seguir==true) { for(int pos=0;pos<vecoperadoresaniveldebits.length;pos++ ) { if(cad.equals(vecoperadoresaniveldebits[pos])) { seguir=false; tipo="opernivelbits"; break; } } } if(seguir==true) { for(int pos=0;pos<veccaracteresespeciales.length;pos++) { if(cad.equals(veccaracteresespeciales[pos])) { seguir=false; tipo="especiales"; break; } } }

if(seguir==true) { char caracter=' '; for(int pos=0;pos<vecalterno.length;pos++) { caracter=cad.charAt(pos); if(caracter=='"') { seguir=false; tipo="agrupacion"; break; } } } if(seguir==true) { for(int pos=0;pos<vecbooleano.length;pos++) { if(cad.equals(vecbooleano[pos])) { seguir=false; tipo="booleana"; break; } } } if(seguir==true) tipo="variable"; return tipo; } }

Vous aimerez peut-être aussi