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;
}
}