ANÁLISIS LEXICO

Eliminación de e espacios en blanco y comentarios: el traductor de expresiones reconoce todos los caracteres de la entrada, de modo que los caracteres extraños, como los espacios en blanco, harán que falle. Muchos lenguajes permiten que aparezcan “espacios en blanco” (caracteres en blanco, caracteres TAB y de nueva línea) entre los componentes léxicos. Los comentarios también pueden no ser considerados por el analizador sintáctico y el traductor, por tanto también se pueden tratar como espacios en blanco.


Si el analizador léxico elimina los espacios en blanco, el analizador sintáctico nunca tendrá que considerarlos. 


Constantes: en cualquier momento que aparece un dígito solo en una expresión, parece razonable poner una constante entera arbitraria en su lugar. Como una constante entera es una secuencia de dígitos, pueden admitirse constantes enteras añadiendo producciones a la gramática de las expresiones o creando un componente léxico para tales constantes. La tarea de agrupar dígitos para formar enteros se le asigna, por lo general, a un analizador léxico, por que los números se pueden tratar como unidades simples durante la traducción.

Sea num el componente léxico que presenta un entero. Cuando una secuencia de dígitos aparece en la cadena de entrada, en analizador léxico pasara num al analizador sintáctico. El valor del entero se pasara como atributo del componente léxico num. Lógicamente, el analizador léxico pasa al componente léxico y el atributo al analizador sintáctico. Al escribir un componente léxico y su atributo como una tupla encerrada entre <>, la entrada 31+28+59 se transforma en la secuencia de tuplas <num, 31> <+,> <num, 28> <+,> <num, 59>
El componente léxico + no tiene atributos. Los segundos componentes de las tuplas, los atributos, no desempeñan papel alguno durante el análisis sintáctico, pero son necesarios en la traducción.



Reconocimiento de palabras claves e identificadores: los lenguajes utilizan identificadores como nombres de variables, matrices, funciones y similares. A menudo, una gramática para un lenguaje trata a un identificador como un componente léxico. Un analizador basado en esta gramática espera ver el mismo componente léxico. 

Por ejemplo id, cada vez que un identificador aparezca en la entrada
Cuenta=cuenta+ incremento;
Seria convertida por el analizador léxico en la cadena de componentes léxicos id=id+id;

ejemplo Propuesto:

x=8+5-3;

quedaría:
id,1=id,2+id,3-id,4;


Un analizador léxico: cuando entre el analizador sintáctico y la cadena de entrada se inserta un analizador léxico, este interactúa con los dos. Lee los caracteres de la entrada, los agrupa en lexemas y pasa los componentes léxicos formados por los lexemas, junto con los valores de sus atributos, a las etapas posteriores del compilador. En algunas situaciones el analizador léxico tiene que leer algunos caracteres por adelantado antes de poder decidir que componente léxico va a devolver al analizador sintáctico.

ejemplo:


Scanner reader = new Scanner(System.in);                
int Numero1, Numero2;


El analisis lexico es;


(Scanner,reservado) (reader,reservado) = (new, reservado) (Scanner,reservado)(()(System.in)())(;)                
(int,reservado) (id,1)(,)(id,2)(;)

Lexema:                                               Token:

Sacanner                                             palabra reservada
reader                                                  palabra reservada
=                                                           (=) o Asignacion
New                                                      palabra reservada
Sacanner                                             palabra reservada
(                                                           parentesis open
System.in                                             palabra reservada
)                                                           parentesis close
;                                                           palabra reservada
int                                                        palabra reservada
Numero1                                              id,1
,                                                          palabra reservada
Numero2                                              id,2
;                                                          palabra reservada
                                 

0 comentarios:

Publicar un comentario