Trabajo Análisis Léxico
Trabajo Análisis Léxico
Trabajo Análisis Léxico
Analizador Lxico 1
INTRODUCCIN
En este presente trabajo que presento, le informar acerca de cmo funciona el anlisis
lxico Vimos que la primera fase del anlisis es el anlisis lxico. El principal objetivo del
analizador lxico es leer el flujo de caracteres de entrada y transformarlo en una secuencia
de componentes lxicos que utilizara el analizador sintctico.
Al tiempo que realiza esta funcin, el analizador lxico se ocupa de ciertas labores de
\limpieza".
Entre ellas est eliminar los blancos o los comentarios. Tambin se ocupa de los problemas
que pueden surgir por los distintos juegos de caracteres o si el lenguaje no distingue
maysculas y minsculas.
Para reducir la complejidad, los posibles smbolos se agrupan en lo que llamaremos
categoras lxicas. Tendremos que especificar qu elementos componen estas categoras,
para lo que emplearemos expresiones regulares. Tambin ser necesario determinar si una
cadena pertenece o no a una categora, lo que se puede hacer eficientemente mediante
autmatas de estados finitos.
Procesadores de Lenguaje I
Analizador Lxico 2
ANLISIS LXICO (SCANNER)
La fase de rastreo (scanner), tiene las funciones de leer el programa fuente como un archivo
de caracteres y dividirlo en tokens. Los tokens son las palabras reservadas de un lenguaje,
secuencia de caracteres que representa una unidad de informacin en el programa fuente.
En cada caso un token representa un cierto patrn de caracteres que el analizador lxico
reconoce, o ajusta desde el inicio de los caracteres de entrada. De tal manera es necesario
generar un mecanismo computacional que nos permita identificar el patrn de transicin
entre los caracteres de entrada, generando tokens, que posteriormente sern clasificados.
Este mecanismo es posible crearlo a partir de un tipo especifico de maquina de estados
llamado autmata finito.
FUNCIN DEL ANALIZADOR LXICO
Es la primera fase de un compilador. Su principal funcin consiste en leer la secuencia de
caracteres del programa fuente, carcter a carcter, y elaborar como salida la secuencia de
componentes lxicos que utiliza el analizador sintctico. El analizador sintctico emite la
orden al analizador lxico para que agrupe los caracteres y forme unidades con significado
propio llamados componentes lxicos (tokens). Los componentes lxicos representan:
o Palabras reservadas: if, while, do,
o Identificadores: variables, funciones, tipos definidos por el usuario, etiquetas,
o Operadores: =, >, <, >=, <=, +, *,
o Smbolos especiales: ;, ( ), { },
o Constantes numricas. literales que representan valores enteros y flotantes.
o Constantes de carcter: literales que representan cadenas de caracteres.
El analizador lxico opera bajo peticin del analizador sintctico devolviendo un
componente lxico conforme el analizador sintctico lo va necesitando para avanzar en la
gramtica. Los componentes lxicos son los smbolos terminales de la gramtica. Suele
implementarse como una subrutina del analizador sintctico. Cuando recibe la orden obtn
el siguiente componente lxico, el analizador lxico lee los caracteres de entrada hasta
identificar el siguiente componente lxico.
Adems el analizador lxico es responsable de:
Manejo de apertura y cierre de archivo, lectura de caracteres y gestin de posibles
errores de apertura.
Eliminar comentarios, espacios en blanco, tabuladores y saltos de lnea.
Inclusin de archivos y macros.
Procesadores de Lenguaje I
Analizador Lxico 3
Contabilizar nmero de lneas y columnas para emitir mensajes de error.
Una de las ventajas de separar el anlisis lxico y anlisis sintctico es que facilita la
transportabilidad del traductor si se decide realizar cambios posteriores, por ejemplo
cambiar las etiquetas begin-end por llaves de apertura y cierre { }.
COMPONENTES LXICOS, PATRONES Y LEXEMAS
En la fase de anlisis, los trminos componentes lxicos (token), patrn y lexema se
emplean con significados especficos. Un analizador lxico, inicialmente lee los lexemas y
le asigna un significado propio.
Componente lxico es la secuencia lgica y coherente de caracteres relativo a una
categora: identificador, palabra reservada, literales (cadena/numrica), operador o carcter
de puntuacin, adems de que un componente lxico puede tener uno o varios lexemas.
Patrn es una regla que genera la secuencia de caracteres que puede representar a un
determinado componente lxico (expresin regular).
Lexema es una cadena de caracteres que concuerda con un patrn que describe un
componente lxico (valor de cadena).
MANEJO DE BUFFER DE ENTRADA
Existen algunos aspectos de eficiencia relacionados con el manejo de buffer. Primero se
menciona un esquema de doble buffer de entrada que resulta til como pre-anlisis de la
entrada para identificar los componentes lxicos. El segundo esquema introduce algunas
tcnicas tiles para aumentar la eficiencia del analizador lxico, empleando centinelas.
Hay veces en que el analizador lxico necesita analizar previamente varios caracteres,
adems del lexema para un patrn, antes de poder anunciar una concordancia. Se pueden
emplear muchos esquemas de manejos de buffer, pero, aqu tan solo se sealarn algunos
principios bsicos.
Parejas de buffer Se utiliza un buffer dividido en dos mitades de N (1024 512)
caracteres cada una, Se leen N caracteres de entrada en cada mitad del buffer con un orden
de lectura del sistema, en vez de invocar una instruccin de lectura para cada carcter de
entrada. Si quedan menos de N caracteres en la entrada, entonces se lee un carcter especial
eof en el buffer despus de los caracteres de entrada. Es decir, eof marca el final del archivo
fuente y es distinto a cualquier carcter de la entrada.
EXPRESIONES REGULARES
El origen de las expresiones regulares surge de la teora de autmatas y la teora de
lenguajes formales, ambas parte de la ciencias computacionales terica. Este campo estudia
los modelos computacionales (autmata) y la manera de describir y clasificar los lenguajes
formales. Un lenguaje formal puede ser especificado de varias maneras, tales como:
Cadenas producidas por alguna gramtica formal.
Cadenas producidas por expresiones regulares.
Procesadores de Lenguaje I
Analizador Lxico 4
Cadenas aceptadas por algunos autmatas tales como las maquinas de Turing o autmatas
de estado finito.
A las expresiones regulares frecuentemente se les llaman patrones, ya que son expresiones
que describen a un conjunto de cadenas. Frecuentemente son usadas para dar una
descripcin concisa de un conjunto, sin tener que listar todos sus elementos.
Las expresiones regulares pueden ser expresadas en trminos de la teora de lenguajes
formales. Consisten de constantes y operadores que denotan el conjunto de cadenas y
operaciones sobre estos conjuntos, respectivamente. Dado un alfabeto las siguientes
constantes son definidas:
Conjunto vaco: L( ) denota el conjunto { }
Cadena vaca: L( ) denota el conjunto { }
Carcter del alfabeto: L( a ), a elemento de denota el conjunto { a }
OPERACIONES BSICAS EN EXPRESIONES REGULARES
Seleccin de alternativas (unin) Si r y s son expresiones regulares, entonces r | s es una
expresin regular que define cualquier cadena que concuerda con r o con s. En trminos de
lenguajes decimos que r | s es la unin de los lenguajes de r y s, o L(r | s) = L(r) U L(s) = {
| esta en r o esta en s }
ejemplo:
o L(a | b) = L(a ) U L(b) = { a, b }
o L(a | ) = { a, }
o L(a | b | c | d ) = { a, b, c, d }
AUTMATAS FINITOS
Una maquina de estado finito o autmata finito, es un modelo computacional que consiste
de un conjunto de estados, un estado de inicio, un alfabeto de entrada y una funcin de
transicin que traza un mapa a un siguiente estado, a partir del smbolo de entrada y el
estado actual.
En particular, los autmatas finitos se pueden utilizar para describir el proceso de
reconocimiento de patrones en cadenas de entrada. El sistema recibe una cadena constituida
por smbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que ese
autmata reconoce. De esta manera se pueden construir analizadores lxicos, construyendo
programas de computadora que realicen las operaciones de un autmata.
Es claro que existe una fuerte relacin entre los autmatas y las expresiones regulares, y
veremos mas adelante como construir un autmata finito a partir de una expresin regular.
AUTMATA FINITO NO DETERMINSTICO
AUTMATA FINITO DETERMINSTICO
Procesadores de Lenguaje I
Analizador Lxico 5
Un autmata finito determinista (DFA por sus siglas en ingles), es un modelo donde el
siguiente estado de la transicin esta dado particularmente por el estado actual y el carcter
de entrada actual. Si ningn estado de transicin es especificado, la cadena entrante es
rechazada.
La siguiente definicin formalmente introduce un DFA, ( S, , T, s, A ) donde:
S conjunto finito no vaco de elementos llamado estados
alfabeto de entrada
T es una funcin de transicin de S en S
sS estado inicial
A S conjunto no vaco de estados finales
DIAGRAMA DE ANALIZADORES
LXICOS
Procesadores de Lenguaje I
Analizador Lxico 6
CONCLUSIN
Como resultado de la investigacin de analizador lxico, es posible concluir que el
analizador lxico divide la entrada en componentes lxicos y los componentes se
agrupan en categoras lxicas.
Para empezar se debe entender el proceso de compilacin, para que la maquina
entienda el lenguaje a analizar, esto inicia con el lxico. Los autmatas son para
poder entender el proceso del compilador, cuando pasa por diferentes estados para
llegar a su estado final.