¿Como hacer un analizador semantico?

Iniciado por DoSser, Noviembre 07, 2016, 10:00:10 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola de nuevo! estos días he andado un poco atareado con eso de los programas que me dejan en la uni.. y la verdad es que necesito hacer un programa que me detecte las variables repetidas, también que me compruebe si es el tipo de variable correcta al realizar una operación  por ejemplo:
String a,b,c,a;
int b = 12;
a=b;

a ya se ha declarado una  ves y a no puede ser igual a b por que son tipos diferentes,  el caso es que no se por donde empezar el bendito programa, no vengo a pedir que me lo realicen ajaja eso no es de lo mio, pero si me gustaria que me orientaran acerca de las estructuras y metodos que podria utilizar en java,  tengo un codigo  de un analizador lexico que hice hace un semestre y no se si lo pueda reutilizar:
Código: java

String patron =("(public|System|println|nextInt|Scanner|nextDouble|import|class|packaje|private|void|method|event|static|java|arg)|([+|-|/|%|*|=|<|>|>=|<=|!=]+)|(int|double|String|char|boolean)|([0-9]+)|([a-zA-Z]+)");
    String codigo;

jTextArea12.setText("");
        codigo=jTextArea1.getText();
        Pattern p = Pattern.compile(patron);
        Matcher mat = p.matcher (codigo);
       
          while (mat.find()){
        String reservada = mat.group(1);
        if(reservada != null){
            jTextArea12.append(reservada+" <--- Palabra reservada \n");
        }
 
        String operador = mat.group(2);
        if(operador != null){
            jTextArea12.append(operador+" <--- Operador\n");
           
        }
        String tipoVariable = mat.group(3);
        if(tipoVariable != null){
            jTextArea12.append(tipoVariable+" <--- Tipo de Variable\n");
        }
       
        String numero = mat.group(4);
        if(numero != null){
            jTextArea12.append(numero+" <--- Numero \n");
       }
       
        String cadena = mat.group(5);
        if(cadena != null){
            jTextArea12.append(cadena+" <--- Cadena \n");
        }
       
       
       }


lo que hace es separar las palabras en tokens de acuerdo al patron, no se si pueda adaptarlo  para que me realice las funciones que comente,
Gracias por prestarme atencion :)