En esta oportunidad les estaré presentando un analizador léxico, Para este ejercicio asumimos una gramática formal simple que acepta operadores binarios de suma, resta, multiplicación y división, también acepta palabras reservadas como INICIO,FIN,ESCRIBIR,LEER,MIENTRAS,FINMQ,PARA,FINPARA,SI,SINO,CASE,BREAK,DEFAULT,ENTERO,CADENA,FLOAT
identificadores o variables los cuales van a empezar con el símbolo & seguida de una palabra escrita en mayúscula ejemplo &A &SUMA
números 1,2,3,4,5..........
símbolos como ;
ya ustedes verán que otras expresiones les quieran agregar. Lo primero que haremos es crear un enum llamado Tipo que es donde vamos a colocar nuestras expresiones regulares.
public enum Tipo {
NUMERO("^\\d+$"),
OPERADOR_BINARIO("[*|/|+|-|=]$"),
PALABRAS_RESERVADAS("(INICIO|FIN|ESCRIBIR|LEER|MIENTRAS|FINMQ|PARA|FINPARA|SI|SINO|CASE|BREAK|DEFAULT|"
+ "ENTERO|CADENA|FLOAT)$"),
IDENTIFICADORES("^&[A-Za-z]+$"),
SIMBOLO("[;]$");
public final String patron;
Tipo(String s) {
this.patron = s;
}
}
Lo segundo que haremos es crear la clase Token la cual tendrá como atributos el tipo de token y el valor ademas los metodos set y get.
private Tipo tipo;
private String valor;
public Tipo getTipo() {
return tipo;
}
public void setTipo(Tipo tipo) {
this.tipo = tipo;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
}
Lo siguiente es crear un Jframe llamado prueba que es donde aplicaremos toda la lógica y la vista.
Quedara asi.
Por ultimo crearemos las clase Lexer donde implementaremos el método main el cual llamara al Jframe para que ejecute.
public class Lexer {
public static void main(String[] args) {
new probar().setVisible(true);
}
}
no se les olvide importar todas las clases que el editor les diga.
Ejemplo del programa ejecutado.
mensaje si no encuentra el archivo.
En el caso en que ho halla ningún error léxico.
En el caso en que halla errores léxicos.
Esto es todo, podra descargar el archivo completo aqui.
3 comentarios
Write comentariosDisclpas cuales son las reglas del lenguaje que estas colocando para analizar?
Replyquisiera saber si puedo tener acceso al codigo
ReplyYa se encuentra nuevamente disponible el codigo.
ReplyConversionConversion EmoticonEmoticon