Home - GonzaloDavid/Compiladores GitHub Wiki

//Gonzalo david proaño package com.epn; import java.util.StringTokenizer; import java.util.regex.*; import java.awt.Desktop; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter;

import javax.swing.JOptionPane;

public class AnalisadorLexico { public String Verificar() { try{ String direccion="C:\Users\DAVID PROAÑO\Desktop\CompiladoresAnalisador\input.txt"; FileReader abrir=new FileReader(direccion); BufferedReader br = new BufferedReader(abrir); String cadena=br.readLine(); StringTokenizer st =new StringTokenizer(cadena); while (st.hasMoreTokens()) { String s2;

		if(this.VCaracterEspecial()==true)
		{
			return "caracter especial";
		}
		if(this.VOperadorCompuestos()==true)
		{
			return "operador compuesto";
		}
		if(this.VPalabraReservada()==true)
		{
			return "palabra reservada";
		}
		
		if(this.VNumeros()==true)
		{
			return "int";
		}
		if(this.VDecimal()==true)
		{
			return "float";
		}
		if(this.VDecimal()==true)
		{
			return "boolean";
		}
		if(this.VCharacteres()==true)
		{
			return "Char";
		}
		s2 = st.nextToken();
		}

	}catch(Exception ex)
	{

	}
	return "error";
}


public boolean VCaracterEspecial()
{
	try{
		String direccion="C:\\Users\\DAVID PROAÑO\\Desktop\\CompiladoresAnalisador\\input.txt";
		FileReader abrir=new FileReader(direccion);
		BufferedReader br = new BufferedReader(abrir);
		String cadena=br.readLine();
		StringTokenizer st =new StringTokenizer(cadena);
		while (st.hasMoreTokens())
		{
			
			String s2;
			s2 = st.nextToken();
			Pattern pat = Pattern.compile("[+|;|:|(|)|[|]|{|}|,|-|*|/|>|<|=|!|&|$]");
			
			Matcher mat = pat.matcher(cadena);
			if (mat.matches()==true)
			{
				
				return true; 
			} 

		}
	}
	catch(Exception ex)
	{

	}
	return false;
	
}


public boolean VOperadorCompuestos()
{
	try{
		String direccion="C:\\Users\\DAVID PROAÑO\\Desktop\\CompiladoresAnalisador\\input.txt";
		FileReader abrir=new FileReader(direccion);
		BufferedReader br = new BufferedReader(abrir);
		String cadena=br.readLine();
		StringTokenizer st =new StringTokenizer(cadena);
		while (st.hasMoreTokens())
		{
			String s2;
			s2 = st.nextToken();
			Pattern pat = Pattern.compile("&&|==|!=|<=|>=");
			Matcher mat = pat.matcher(cadena);
			
			if (mat.matches()==true) {
				
				return true;
			} 


		}
	}catch(Exception ex)
	{

	}
	return false;
}


public boolean VPalabraReservada()
{
	try{
		String direccion="C:\\Users\\DAVID PROAÑO\\Desktop\\CompiladoresAnalisador\\input.txt";
		FileReader abrir=new FileReader(direccion);
		BufferedReader br = new BufferedReader(abrir);
		String cadena=br.readLine();
		StringTokenizer st =new StringTokenizer(cadena);
		while (st.hasMoreTokens())
		{
			String s2;
			s2 = st.nextToken();
			Pattern pat = Pattern.compile("int| float| bool| char|string|if| then|else|while|do| input|output|return");
			Matcher mat = pat.matcher(cadena);
			if (mat.matches()==true) {
				return true;
			} else {

			}
		}}catch(Exception ex)
	{

	}
	return false;

}

public boolean VNumeros() { try{ String direccion="C:\Users\DAVID PROAÑO\Desktop\CompiladoresAnalisador\input.txt"; FileReader abrir=new FileReader(direccion); BufferedReader br = new BufferedReader(abrir); String cadena=br.readLine(); StringTokenizer st =new StringTokenizer(cadena); while (st.hasMoreTokens()) { String s2; s2 = st.nextToken(); Pattern pat = Pattern.compile("-*\d+"); Matcher mat = pat.matcher(cadena); if (mat.matches()==true) { return true; } else {

	     }
		
	}}catch(Exception ex)
{

}
return false;

} public boolean VString() { try{ String direccion="C:\Users\DAVID PROAÑO\Desktop\CompiladoresAnalisador\input.txt"; FileReader abrir=new FileReader(direccion); BufferedReader br = new BufferedReader(abrir); String cadena=br.readLine(); StringTokenizer st =new StringTokenizer(cadena); while (st.hasMoreTokens()) { String s2; s2 = st.nextToken(); Pattern pat = Pattern.compile("[\w*"); Matcher mat = pat.matcher(cadena); if (mat.matches()==true) { return true; } else {

	     }
		
	}}catch(Exception ex)
{

}
return false;

} public boolean VCharacteres() { try{ String direccion="C:\Users\DAVID PROAÑO\Desktop\CompiladoresAnalisador\input.txt"; FileReader abrir=new FileReader(direccion); BufferedReader br = new BufferedReader(abrir); String cadena=br.readLine(); StringTokenizer st =new StringTokenizer(cadena); while (st.hasMoreTokens()) { String s2; s2 = st.nextToken(); Pattern pat = Pattern.compile("‘\w*’"); Matcher mat = pat.matcher(cadena); if (mat.matches()==true) { return true; } else {

	     }
		
	}}catch(Exception ex)
{

}
return false;

} public boolean VBoleano() { try{ String direccion="C:\Users\DAVID PROAÑO\Desktop\CompiladoresAnalisador\input.txt"; FileReader abrir=new FileReader(direccion); BufferedReader br = new BufferedReader(abrir); String cadena=br.readLine(); StringTokenizer st =new StringTokenizer(cadena); while (st.hasMoreTokens()) { String s2; s2 = st.nextToken(); Pattern pat = Pattern.compile("true|false"); Matcher mat = pat.matcher(cadena); if (mat.matches()==true) { return true; } else {

	     }
		
	}}catch(Exception ex)
{

}
return false;

} public boolean VDecimal() { try{ String direccion="C:\Users\DAVID PROAÑO\Desktop\CompiladoresAnalisador\input.txt"; FileReader abrir=new FileReader(direccion); BufferedReader br = new BufferedReader(abrir); String cadena=br.readLine(); StringTokenizer st =new StringTokenizer(cadena); while (st.hasMoreTokens()) { String s2; s2 = st.nextToken(); Pattern pat = Pattern.compile("-*\d+,\d+"); Matcher mat = pat.matcher(cadena); if (mat.matches()==true) { return true; } else {

	     }
		
	}}catch(Exception ex)
{

}
return false;

} public void SalidaArchivo(String direccion,String direccion1) {String x="";

x=this.Verificar();

try{
	FileReader abrir1=new FileReader(direccion1);
	BufferedReader br = new BufferedReader(abrir1);
	String cadena=" ";
	File abrir=new File (direccion);
	FileWriter  w=new FileWriter(abrir);
	BufferedWriter bw = new BufferedWriter(w);
	PrintWriter wr =new PrintWriter(bw);
	while((cadena=br.readLine())!=null)
	{
		StringTokenizer st =new StringTokenizer(cadena);
		while (st.hasMoreTokens())
		{
			String s2;
			s2 = st.nextToken();
			wr.write(""+x+"    ");

		}
	}

	wr.append("");
	wr.close();
	bw.close();


   }catch(Exception ex)
   {
	JOptionPane.showMessageDialog(null, "La direccion del archivo esta incorrecta");
   }
}
public void EntradaArchivo(String direccion)
{
	try{
		FileReader abrir=new FileReader(direccion);
		BufferedReader br = new BufferedReader(abrir);
		String cadena=" ";
		while((cadena=br.readLine())!=null)
		{
			System.out.println(""+cadena	);
		}
	}catch(Exception ex)
	{
		JOptionPane.showMessageDialog(null, "La direccion del archivo esta incorrecta");
	}
}
public int ErrorLinea()
{
	int A =0;
	try{
		String direccion="C:\\Users\\DAVID PROAÑO\\Desktop\\CompiladoresAnalisador\\input.txt";
		FileReader abrir=new FileReader(direccion);
		BufferedReader br = new BufferedReader(abrir);
		String cadena=br.readLine();
		StringTokenizer st =new StringTokenizer(cadena);
		while (st.hasMoreTokens())
		{
			
			String s2;
			s2 = st.nextToken();
			if(this.Verificar().equals("error"))
			{
				A++;
				return A;
				
			}
			

		}
	}
	catch(Exception ex)
	{

	}
	return A;
}

}