lunes, 3 de abril de 2017

Analizador Lexico y Sintactico

Analizador Léxico

CODIGO
package examen_3;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.*;
import java.lang.*;
import javax.swing.JOptionPane;
public class Examen_3 {
    public static void main (String[] args)throws IOException {
        BufferedReader a= new BufferedReader(new InputStreamReader(System.in));
        String lector;
        int cont_pal=0;
        String cadena;
        try{
            FileReader fr = new FileReader("C:\\Users\\Carmona Yañez\\Documents\\NetBeansProjects\\examen_3\\Examen3.txt");
            BufferedReader br = new BufferedReader(fr);
            lector = JOptionPane.showInputDialog("QUE PALABRA DESEAS BUSCAR: ");
            
            while ((cadena=br.readLine())!=null){
                String arreglo[] = cadena.split(" ");
                
                for (int i=0; i<arreglo.length;i++){
                    if(arreglo[i].equals(lector)){
                    cont_pal++;    
                    }
                } 
            }
            JOptionPane.showMessageDialog(null," "+cont_pal+" veces se repite la palabra: "+lector);
        }catch (Exception ex){
        }
    }
}

Compilamos el programa de Java, y al ejecutarlo se abre el siguiente recuadro, el cual nos pide que introduzcamos en el área de texto

Al dar click en Aceptar el programa lo que hace es buscar la palabra en el documento de texto llamado Examen3, y este nos dice cuantas veces se repite la palabra dentro del texto

Puede diferenciar entre mayúsculas y minúsculas

Y también distingue palabras alfanuméricas

Analizador Sintáctico
CÓDIGO
package lenguaje_formal;
import java.lang.*;
import java.io.*;
import javax.swing.JOptionPane;
public class Lenguaje_formal {
    public static void main(String[] args)throws IOException {
BufferedReader a = new BufferedReader (new InputStreamReader(System.in));
    String b = "chin";
    String c = "chon" ;
    String d = "chan";
    String e = ";";
    String tipov;
    String signo;
    String leer = "leer";
    String Leer;
    String imprime = "imprime";
    String Imprime;
    JOptionPane.showMessageDialog(null,"LENGUAJE DE PROGRAMACION FORMAL\n\n\n"
            + "Palabra reservada para valores enteros 'chin'"
            + "\n\nPalabra reservada para valores de cadena 'chon'"
            + "\n\nPalabra reservada para valores decimales 'chan'");
    tipov = JOptionPane.showInputDialog("");
    if(b.equals(tipov)){
        String palabra;
        palabra = JOptionPane.showInputDialog(null,tipov+" ");
        signo = JOptionPane.showInputDialog(null,tipov+" "+palabra);
        if(e.equals(signo)){
        Leer= JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e);
            if(leer.equals(Leer)){
            String x;
            x = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer);
            signo = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x);            
                if(e.equals(signo)){
                Imprime= JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo);
                    if(imprime.equals(Imprime)){
                    palabra = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime);
                    signo = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime+" "+palabra);
                        if(e.equals(signo)){
                        JOptionPane.showMessageDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime+" "+palabra+""+signo+"\n\n"+x);
                        }
                    }
                }                
            }
        }
    }
    
    
    if (c.equals(tipov)){
        String palabra;
        palabra = JOptionPane.showInputDialog(null,tipov+" ");
        signo = JOptionPane.showInputDialog(null,tipov+" "+palabra);
        if(e.equals(signo)){
        Leer= JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e);
            if(leer.equals(Leer)){
            String x;
            x = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer);
            signo = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x);            
                if(e.equals(signo)){
                Imprime= JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo);
                    if(imprime.equals(Imprime)){
                    palabra = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime);
                    signo = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime+" "+palabra);
                        if(e.equals(signo)){
                        JOptionPane.showMessageDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime+" "+palabra+""+signo+"\n\n"+x);
                        }
                    }
                }                
            }
        }
    }
    
    
    if(d.equals(tipov)){
    String palabra;
        palabra = JOptionPane.showInputDialog(null,tipov+" ");
        signo = JOptionPane.showInputDialog(null,tipov+" "+palabra);
        if(e.equals(signo)){
        Leer= JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e);
            if(leer.equals(Leer)){
            double x;
            x =  Double.parseDouble(JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer));
            signo = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x);            
                if(e.equals(signo)){
                Imprime= JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo);
                    if(imprime.equals(Imprime)){
                    palabra = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime);
                    signo = JOptionPane.showInputDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime+" "+palabra);
                        if(e.equals(signo)){
                        JOptionPane.showMessageDialog(null,tipov+" "+palabra+""+e+"\n"+leer+" "+x+""+signo+"\n"+Imprime+" "+palabra+""+signo+"\n\n"+x);
                        }
                    }
                }                
            }
        }    
    }  
  }
}

al compilar el programa nos aparece el siguiente recuadro que nos muestra la sintaxis de las palabras reservadas de este lenguaje de programación

Introducimos la palbra reservada chin la cual pertenece a valores enteros

Damos aceptar y en seguida introducimos el nombre de una variable

Escribimos punto y coma para continuar, a continuación escribimos leer para que reconozca algun valor numerico y lo relacione a la variable val1

Damos en continuar y agregamos el valor (en este caso 23), hacemos click en Aceptar y escribimos punto y coma

Para imprimir todo en pantalla, escribimos la palabra imprime, damos aceptar escribimos el nombre de la variable (val1)

Tecleamos punto y coma y al dar Aceptar se imprimirá el numero de la variable que se guardo