
Analizador Lexico
Java
Publicado el 7 de Octubre del 2007 por Jose Ramon (6 códigos)
113.665 visualizaciones desde el 7 de Octubre del 2007
Código que permite evaluar expresiones y reconocer tokens del lenguaje Java. Todo el Código esta comentado.






(14)
Comentarios sobre la versión: Versión 1 (14)
hace año y medio que no programo en forma asi que me iba a costar algo de trabajo
desempolvarme.
asi que muchas gracias por tu trabajo.
me falta analizarlo a fondo y hacerle unos minusculos cambios
y una interfaz de usuario, si lo deseas publico aqui el resultado claro con los
debidos agradacimientos
C:Documents and SettingsFamliaprogramasjava>java tipos
Exception in thread "main" java.lang.NoSuchMethodError: main
por ejemplo si tengo una expresión de este tipo :Scanf("%d",resultado);
Que me realize el analisis lexico de esta expresión de modo que cuando teclee cualquier expresión me indique si es una palabra reservada , un simbolo especial, un operador etc. y que por último me indique el número total de tokens.
Scanf("%d",resultado);
Scanf es una palabra reservada
( es un parentesis de apertura
" simbolo especial comillas de apertura
% simbolo especial porcentaje
d es un identificador no.1
" simbolo especial comillas de cerradura
, simbolo especial de coma
resultado es un identificador no.2
) es un parentesis de cerradura
; es un delimitador
Muestre el número total de tokens= 10 tokens.
*****************************************
solo tengo este pequeño ejemplo pero unicamente separa palabras y te da el total de tokens.
package StringTokenizer;
import java.util.StringTokenizer;
public class Programa {
public static void main (String []args) {
StringTokenizer st = new StringTokenizer("Ronaldo=Fútbol;Gasol=Baloncesto;","=;",true);
System.out.println("Hay un total de: "+st.countTokens()+" tokens.");
while (st.hasMoreTokens()) { System.out.println(st.nextToken()); }
}
}
lo que muestra al ejecutar el programa
run:
Hay un total de: 8 tokens.
Ronaldo
=
Fútbol
;
Gasol
=
Baloncesto
;
BUILD SUCCESSFUL (total time: 0 seconds)
import staric compilador.Token.*;
%%
%class Lexer
%type Token
L=[a-zA-z_]
D=[0-9]
letraO=[o|O]
letraB=[b|B]
digitoB=[0|1]
ligitoB=[0|1|2-7]
letraH=[h|H]
lhexa=[A-F]
WHHITE=[ \t\r\n]
%}
public String lexers;
%}
%%
{WHITE} {/*Ignore*/}
"=" {return IGUAL}
"+" {return SUMA}
"*" {return MULTIPLICACION}
"-" {return RESTA}
"/" {return DIVISION}
">" {return MAYORQUE}
"<" {return MENORQUE}
"<>" {return DIFRENCIA}
"<=" {return MENOR_O_IGUAL_QUE}
">=" {return MAYOR_O_IGUAL_QUE}
"(" {return PARENTESIS_DE_APERTURA}
")" {return PARENTESIS_DE_CIERRE}
"{" {return LLAVE_DE_APERTURA}
"{" {return LLAVE_DE_CIERRE}
([D]*|\.|(D))+ (lexers=yytext(); return DECIMAL)
({lhexa}|(D)| + {letraH} {lexs=yytext(); return HEXADECIMAL;}