FUNCIÓN DEL ANALIZADOR LÉXICO.
El analizador
léxico es la primera fase de un compilador. Su principal función consiste en
leer los caracteres de entrada y elaborar como salida una secuencia de
componentes léxicos que utiliza el analizador sintáctico para hacer el
análisis.
Como el
analizador léxico es la parte del compilador que lee el texto fuente, también
puede realizar ciertas funciones secundarias en la interfaz del usuario, como
eliminar del programa fuente comentarios y espacios en blanco en forma de
caracteres de espacio en blanco, caracteres TAB y de línea nueva. Otra función
es relacionar los mensajes de error del compilador con el programa fuente.
En algunas
ocasiones, los analizadores léxicos se dividen en una cascada de dos fases; la
primera, llamada "examen", y la segunda, "análisis léxico".
El examinador se encarga de realizar tares sencillas, mientras que el
analizador léxico es el que realiza las operaciones complejas.
ASPECTO DEL ANÁLISIS LÉXICO.
Hay varias
razones para dividir la fase de análisis de la compilación en análisis léxico y
análisis sintáctico.
- Un diseño sencillo es quizá la
consideración más importante. Separar el análisis léxico del análisis
sintáctico a menudo permite simplificar una u otra de dichas fases.
- Se mejora la eficiencia del compilador.
Un analizador léxico independiente permite construir un procesador
especializado y potencialmente más eficiente para esta función. Gran parte
de tiempo se consume en leer el programa fuente y dividirlo en componentes
léxicos. Con técnicas especializadas de manejo de buffer para la lectura
de caracteres de entrada y procesamiento de componentes léxicos se puede
mejorar significativamente el rendimiento de un compilador.
- Se mejora la transportabilidad del compilador. Las peculiaridades del alfabeto de entrada y otras anomalías propias de los dispositivos pueden limitarse al analizador léxico.
COMPONENTES LÉXICOS, PATRONES Y LEXEMAS.
Cuando se
menciona el análisis sintáctico, los términos
"componente léxico"(token), "patrón" y
"lexema" se emplean con significados específicos. En general, hay un
conjunto de cadenas en la entrada para el cual se produce como salida el mismo
componente léxico. Este conjunto de cadenas se describe mediante una regla
llamada patrón asociado al componente léxico. Se dice que el patrón concuerda
con cada cadena del conjunto. Un lexema es una secuencia de caracteres en el
programa fuente con la que concuerda el patrón para un componente léxico.
Los componentes
léxicos se tratan como símbolos terminales de la gramática del lenguaje fuente,
con nombres en negritas para representarlos. Los lexemas para el componente
léxico que concuerda con el patrón representan cadenas de caracteres en el
programa fuente que se pueden tratar juntos como una unidad léxica.
En la mayoría
de los lenguajes de programación, se consideran componentes léxicos las
siguientes construcciones: palabra clave, operadores, identificadores,
constante, cadenas literales y signos de puntuación, como paréntesis, coma y
punto y coma.
ATRIBUTOS DE
LOS COMPONENTES LÉXICOS.
Cuando
concuerda con un lexema más de un patrón, el analizador léxico debe
proporcionar información adicional sobre el lexema concreto que concordó con
las fases del compilador.
El analizador
léxico recoge información sobre los componentes léxicos en sus atributos
asociados. Los componentes léxicos influyen en las decisiones del análisis
sintáctico, y los atributos, en la traducción de los componentes léxicos. En la
practica, los componentes léxicos suelen tener un solo atributo – un apuntador
a la entrada de la tabla de símbolos donde se guarda la información sobre el
componente léxico; el apuntador se convierte en el atributo del componente
léxico. A efectos de diagnóstico, puede considerarse tanto el lexema para un
identificador como el número de línea en el éste se encontró por primera vez.
Estos dos elementos de información se pueden almacenar en la entrada de la
tabla de símbolos para el identificador.
PARTES DE UN
PROGRAMA FUENTE.
Las partes de
un programa fuente son: Cabecera, Declaraciones, y partes de sentencias.
CABECERA: La
cabecera de un programa consiste en el nombre del programa que se realiza.
La cabecera de
un subprograma incluye, como mínimo; el tipo de subprograma (procedimiento o
función) y su nombre, las funciones requieren o necesitan que se rectifique el
tipo que devuelven.
DECLARACIONES:
La sección de declaraciones incluye las definiciones de variables y constantes,
etiquetas, tipos y subprogramas.
SENTENCIAS: Es
la parte donde se realizan todas las operaciones que el programa debe de
ejecutar.
0 comentarios:
Publicar un comentario