Sei sulla pagina 1di 15

UNIVERSIDAD NACIONAL

SANTIAGO ANTNEZ DE MAYOLO

PRESENTADO POR:

DE PAZ TOLEDO Tatiana


FLORENTINO HUAMAN Eros
GARGATE CARRANZA Francisco
VISITACION FABIAN Pamela
YAURI SOTO Maycol

ANLISIS LXICO

TEORA DE LENGUAJES

INTRODUCCIN
El analizador lxico es la primera fase de un compilador, lee caracteres de
entrada para formar componentes e identificarlos o clasificarlos y pasar la
informacin de los componentes al analizador sintctico.
Un compilador es un programa informtico que traduce un programa escrito en
un lenguaje de programacin a otro lenguaje de programacin, generando un
programa equivalente que la mquina ser capaz de interpretar. Este proceso
de traduccin se conoce como compilacin.
El analizador lxico que incorporan la mayora de los compiladores de los
lenguajes de programacin realiza adems funciones como eliminar espacios
en blanco, saltos de lnea, tabuladores, ignorar comentarios, deteccin y
recuperacin de errores. Los errores que un analizador lxico reconoce son
smbolos no vlidos o no reconocidos por el lxico del lenguaje o que no
forman parte de ningn componente lxico.
Para reducir la complejidad, los posibles smbolos se agrupan en lo que
llamaremos categoras lxicas, de los cuales 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 puede hacer eficientemente mediante autmatas de estados
finitos.
Existen diversos mtodos para construir un analizador lxico, un mtodo es
usar un AFD para describir el patrn de cada componente. Para este mtodo
se parte de una tabla descriptiva de los componentes lxicos que reconocer el
analizador, en donde se clasifican los diversos tipos de componentes.

INDICE

I.

INTRODUCCION
ANLISIS LXICO
1. Definicin

SEMESTRE 2016 - I

ANLISIS LXICO

II.
III.
IV.
V.

TEORA DE LENGUAJES

2. Objetivo
3. Funciones
4. Categoras lxicas
5. Construccin
6. Componentes lxicos patrones, lexemas
7. Manejo de buffer de entrada
8. Especificaciones de componentes lxicas
9. Implementacin del analizador lxico
10. Ejemplos
CONCLUSION
RECOMENDACIONES
BIBLIOGRAFIA
ANEXOS

SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

I.

ANLISIS LXICO

1. Definicin
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 especfico de mquina de estados llamado autmata
finito.
2. Objetivo
El principal objetivo del analizador lxico es leer el flujo de caracteres de
entrada y transformarlo en una secuencia de componentes lxicos
(tokens) que sern entregados y utilizados por el analizador sintctico.
3. Funciones
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).
Otras funciones que realiza:
Eliminar los comentarios del programa.
Eliminar espacios en blanco, tabuladores, retorno de carro,
etc. y en general, todo aquello que carezca de significado segn

la sintaxis del lenguaje.


Reconocer los identificadores de usuario, nmeros, palabras
reservadas del lenguaje, y tratarlos correctamente con respecto a
la tabla de smbolos (solo en los casos que debe de tratar con la
tabla de smbolos).

SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

Llevar la cuenta del nmero de lnea por la que va leyendo, por si


se produce algn error, dar informacin sobre donde se ha

producido.
Avisar de errores lxicos. Por ejemplo, si @ no pertenece al

lenguaje, avisar de un error.


Puede hacer funciones de preprocesador

4. Categoras Lxicas
Palabras reservadas: if, while, do, etc.
Identificadores: variables, funciones, tipos definidos por el usuario,
etiquetas,
Operadores: =, >, <, >=, <=, +, *, etc.
Smbolos especiales: ;, (, ), {, }, etc.
Constantes numricas. literales que representan valores enteros y
flotantes.
Constantes de carcter: literales que representan cadenas de
caracteres.
5. Construccin
Los analizadores lxicos pueden construirse:

Usando generadores de analizadores lxicos:


Es la forma ms sencilla pero el cdigo generado por el
analizador lxico es ms difcil de mantener y puede resultar menos
eficiente.

Escribiendo el analizador lxico en un lenguaje de alto


nivel:
Permite obtener analizadores lxicos con ms esfuerzo que
con el mtodo anterior pero ms eficientes y sencillos de mantener

Escribiendo

el

analizador

lxico

en

un

lenguaje

ensamblador:
Slo se utilizan en casos especficos debido a su alto coste y baja portabilidad
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
SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

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.
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 { }.

SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

6. 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

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).
Ejemplo de una cadena de cdigo: const pi = 3.1416;

El analizador lxico recoge informacin sobre los componentes


lxicos

en

sus

atributos asociados. Los tokens influyen en las

decisiones del anlisis sintctico, y los atributos, en la traduccin de


los tokens. En la prctica los componentes lxicos suelen tener solo
un atributo. Para efectos de diagnstico, puede considerarse tanto el
lexema para un identificador como el nmero de lnea en el que se
encontr

por

primera

vez.

Esta

informacin

puede

ser

almacenada en la tabla de smbolos para el identificador (estructura


de datos).
Para la cadena E=M*C**2 de ejemplo, los componentes lxicos y
los valores de atributo asociado son:
<identificador, atributo para el smbolo E>
SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

<op_asignacion>
<identificador, atributo para el smbolo M>
<op_multiplica>
<identificador, apuntador al smbolo C>
<op_exponente>
<numero, atributo valor 2>
Se debe tener en cuenta que ciertas parejas no necesitan un valor
de atributo.

Los atributos relacionados con ese token debern ser

conservados y transferidos a alguna estructura de datos para que


sean empleados en las siguientes etapas del anlisis.
7. 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.
E

Inicio
lexema

SEMESTRE 2016 - I

frent
e

ANLISIS LXICO

TEORA DE LENGUAJES

Se mantienen dos apuntadores en el buffer de entrada. La cadena de


caracteres entre los dos apuntadores es el lexema en curso. Al
principio,

los

dos

apuntadores

apuntan

al

primer carcter

del

prximo lexema que hay que encontrar. Uno de ellos, apuntador


delantero, examina hacia adelante hasta encontrar una concordancia
con un patrn. Una vez determinado el siguiente lexema, el apuntador
delantero se coloca en el carcter de su extremo derecho. Despus de
haber procesado el lexema, ambos apuntadores se colocan en el
carcter situado inmediatamente despus del lexema. Con este
esquema se pueden considerar los comentarios y los espacios en blanco
como patrones que no producen componentes lxicos.
Centinela Corrigiendo la deficiencia del mtodo anterior para reducir
la necesidad

de dos pruebas

para

cada

avance del

apuntador

delantero. Se ampla cada mitad del buffer para admitir un carcter


centinela al final. De esta manera se vuelve ms eficiente el proceso de
cargar del buffer, realizando una carga en cada mitad.
E

\0

inicio

frent

e
o

El manejo de buffer es una labor puramente de programacin y se


recomienda realizarla de la manera que resulte ms sencilla, no es
necesario apegarse a alguno de los dos mtodos antes mencionados.
8. Especificaciones de componentes lxicas
Las expresiones regulares son una notacin importante para especificar
patrones. Cada patrn concuerda con una serie de cadenas que, de
modo

que las expresiones regulares

servirn como nombres para

conjuntos de cadenas. El trmino alfabeto denota cualquier conjunto


finito de smbolos, por ejemplo el alfabeto binario { 0, 1 }. Una cadena es
una secuencia de finita de smbolos de un alfabeto y un lenguaje se
refiere a conjunto de cadenas de un alfabeto fijo.
9. Implementacin del analizador lxico
SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

Hasta ahora hemos visto como especificar los lenguajes asociados a las
diferentes categoras lxicas. Sin embargo, el analizador lxico no se
utiliza para comprobar si una cadena pertenece o no a un lenguaje. Lo
que debe hacer es dividir la entrada en una serie de componente lxicos,
realizando en cada uno de ellos determinadas acciones. Algunas de
estas acciones son: comprobar alguna restriccin adicional (por ejemplo
que el valor de un literal entero este dentro de un rango), prepararlos
atributos del componente y emitir u omitir dicho componente. As pues, la
especificacin del analizador lxico debera incluir por cada categora
lxica del lenguaje el conjunto de atributos y acciones asociadas. Un
ejemplo sera:

10. Ejemplos
a. if x1>3 then a:=b+x1
Tokens

Lexemas

if

if

id

x1,a,b

relacin

>

op

asign

:=

then

then

num

SEMESTRE 2016 - I

ANLISIS LXICO

TEORA DE LENGUAJES

b.

II.

CONCLUSIONES

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 lxico son los smbolos terminales de la gramtica.


Suele implementarse como una sub rutina del analizador sintctico.
Cuando recibe la orden obtiene el siguiente

SEMESTRE 2016 - I

componente lxico, el

10

ANLISIS LXICO

TEORA DE LENGUAJES

analizador lxico lee las caractersticas de la entrada hasta identificar el


siguiente componente lxico.
El analizador lxico, tambin conocido como scanner, lee los caracteres

uno a uno desde la entrada y va formando grupos de caracteres con


alguna relacin entre s (tokens), que constituirn la entrada para la
siguiente etapa del compilador. Cada token representa una secuencia de
caracteres que son tratados como una nica entidad.
Como la tarea que realiza el analizador lxico es un caso especial de

coincidencia de patrones, se necesitan los mtodos de especificacin y


reconocimiento de patrones, se usan principalmente los autmatas
finitos que acepten expresiones regulares. Sin embargo, un analizador
lxico tambin es la parte del traductor que maneja la entrada del cdigo
fuente, y puesto que esta entrada a menudo involucra un importante
gasto de tiempo, el analizador lxico debe funcionar de manera tan
eficiente como sea posible.

III.

RECOMENDACIONES

Tener bien definido Tokens, ya que muchas veces se generan dudas


acerca que si es lo mismo o no

De preferencia trabajar el analizador lxico con sentencias CASE e IF,


facilitan la programacin de este.

SEMESTRE 2016 - I

11

ANLISIS LXICO

TEORA DE LENGUAJES

IV.

BIBLIOGRAFA

http://www.paginasprodigy.com/edserna/cursos/compilador/notas/Notas

2.pdf
http://es.scribd.com/doc/4750526/20/FUNCIONES-DEL-ANALIZADOR-

LEXICO
http://www.giaa.inf.uc3m.es/docencia/ITIG/lexico.pdf
http://serdis.dis.ulpgc.es/~ii-pl/ftp/transp/tr-alex-imp.pdf
file:///J:/Analizador%20lexico/Expresi%C3%B3n%20regular%20-

%20Wikipedia,%20la%20enciclopedia%20libre.htm
http://www.ii.uam.es/~alfonsec
Compiladores: Conceptos Fundamentales. B. Teufel, S. Schmidt, T.

Teufel. Addison Wesley Iberoamericana


file:///J:/Analizador%20lexico/Palentino%20Blog%20-%20Introducci
%C3%B3n%20a%20la%20compilaci%C3%B3n.%20Creaci%C3%B3n

SEMESTRE 2016 - I

12

ANLISIS LXICO

TEORA DE LENGUAJES

%20de%20un%20sencillo%20analizador%20l%C3%A9xico.%20Caso
%20pr%C3%A1ctico.htm

V.

SEMESTRE 2016 - I

ANEXOS

13

ANLISIS LXICO

SEMESTRE 2016 - I

TEORA DE LENGUAJES

14

Potrebbero piacerti anche