viernes, febrero 11, 2005

El Lexer !

Experimentando("prueba->error") aprendí que el Analizador Léxico y Sintáctico siempre van en un archivo ".g",también probe que, si coloco este archivo.g en un paquete específico no funciona. Hace poco lei que es en el encabezado que se especifica a quien pertenecen, Asi:
header {
package mipaketito;
}
Aun no lo pruebo pero me parece que asi es.
Lo primero que debo hacer en el proyecto es el Lexer, ya lo empeze y crei que esta era la parte "facilita" del proyecto,pero me ha dado algunos problemitas...
Con la definición de Tokens que unicamente utilizan simbolos terminales en sus expresiones Regulares, no hay ningún problema, pero los demas como las "Constantes Numéricas" (ER=digito+), el Eclipse me lanza un Warning como este: " lexical nondeterminism between rules DIGITO and INT_CONST upon k==1:'0'..'9' k==2:"
En el manual en Ingles de ANTLR, hablan sobre esto pero no entendi como arreglarlo. Tengo k=2 en la definición de las opciones pero no se que pasa.

Según lo que lei en el Manual en Español, las palabras reservadas se declaran en el área de "TOKENS {}" del archivo ".g" . Aún no termino de entender esta clasificación, pero pienso que es por optimización.
Que interesante esta eso de poder establecer reglas para uso exclusivo del Lexer, por ejemplo los espacios en blanco, que como ya sabemos no le interesan a nadie, podemos "dejarlos" en el primer análisis con la palabra reservada "protected". Esta optimización me parece fabulosa ya que ni si quiera se crean tokens.
No me cabe duda que ANTLR es una herramienta poderosa, pobres los que no tuvieron la dicha de usarla en cursos de compiladores anteriores, creo que se le complico mucho mas su 'compiladorsito'.
Esta es una de las razones por la que me gusta la carrera, siempre tratamos de facilitarle las cosas a los demas, desarollando aplicaciones que hagan los trabajos mas "dificiles".

1 Comments:

At 6:38 p. m., Blogger efutch said...

Revisado. Recuerde lo visto en el laboratorio #1, el archivo .g era el que contenía el código del analizador en ANTLR...

 

Publicar un comentario

<< Home