Você está na página 1de 17

Anlisis Lxico

Organizacin de Lenguajes y Compiladores 1 USAC Guatemala, 2013

Anlisis Lxico
La primera fase de un compilador, es su anlisis lexicogrfico, o ms concisamente anlisis lxico. Las tcnicas utilizadas para construir analizadores lxicos tambin se pueden aplicar a otras reas, como, por ejemplo, a lenguajes de consulta y sistemas de recuperacin de informacin.

Anlisis Lxico
Lee la secuencia de caracteres del programa fuente, carcter a carcter, y los agrupa para formar unidades con significado propio. 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.

Anlisis Lxico

Componente lxico Programa fuente

Anlisis Lxico
Obtiene siguiente componente lxico

Anlisis Sintctico

rbol de anlisis sintctico

Otras funciones
Manejo del fichero de entrada del programa fuente: abrirlo, leer sus caracteres, cerrarlo y gestionar posibles errores de lectura. Eliminar espacios en blanco, tabuladores, retorno de carro, etc., y en general, todo aquello que carezca de significado segn el lenguaje.

Llevar la cuenta del nmero de lnea y columna por la que va leyendo, por si se produce algn error, dar informacin sobre donde se ha producido.

Patrn
Es una regla que genera la secuencia de caracteres que puede representar a un determinado componente lxico. Expresiones regulares.

Componente Lxico
Un token o tambin llamado componente lxico es una cadena de caracteres que tiene un significado coherente en cierto lenguaje de programacin. Son los elementos ms bsicos sobre los cuales se desarrolla toda traduccin de un programa, surgen en la primera fase, sin embargo se siguen utilizando en las siguientes fases antes de perderse en la fase de sntesis.

Lexema
Cadena de caracteres que concuerda con un patrn que describe un componente lxico. Un componente lxico puede tener uno o infinitos lexemas.

Ejemplo:
sum = 3 + 7 * 2.85;
Componente Lxico Lexema Identificador Sim_Igual Entero Sim_Sum Entero Sim_Mul Decimal Sim_PComa sum = 3 + 7 * 2.85 ; Smbolo igual. Digito seguido por cero o mas dgitos. Smbolo suma. Digito seguido por cero o mas dgitos. Smbolo multiplicacin. Entero seguido por un punto seguido de un entero. Smbolo punto y coma. Patrn Letra seguida de letras o dgitos.

Expresiones Regulares
Constituyen un mecanismo bastante potente para realizar manipulaciones de cadenas de texto. Representan de forma ms simple un Lenguaje Regular. Representan un patrn por medio del cual se construyen palabras.

Elementos de definicin
Los elementos ms comunes utilizados para definir una Expresin Regular son:
Nombre Unin Concatenacin Cerradura abierta Cerradura cerrada Texto Agrupacin Smbol o | . + ? () Descripcin Indica opcionalidad. Aparece 0 o ms veces. Aparece 1 o ms veces. Aparece 1 vez o ninguna. Indica la aparicin de un texto exacto. Agrupacin de caracteres. Ejemplo a|b a* a+ a? for (a|b)

Indica la concatenacin de caracteres. a.b o ab

Cerradura de Kleene *

Elementos de definicin
Ejemplo a{n} a{n,m} [a-zA-Z] Descripcin Aparece n veces. Aparece n a m veces. Definicin de Rango de caracteres segn el orden definido en ASCII.

[^a]
\t \r

Cualquier elemento que no sea a.


Representa un tabulador . Representa el "regreso al inicio" o sea el lugar en que la lnea vuelve a iniciar.

\n
\f

Representa la nueva lnea. Como tambin el carcter que le dar inicio.


Representa un salto de pgina.

Ejemplo
Encuentra la definicin regular siguientes caractersticas : para las

Las cadenas son una secuencia de dgitos seguido por una secuencia de letras. Las cadenas empiezan dgito, y terminan en letra. con al menos un

El ltimo dgito debe ser par y la primera letra debe ser vocal ( El cero se considera par ).

Autmatas
Es un grafo que acepta palabras validas para el lenguaje y rechaza las incorrectas.

Se dice que es finito porque tiene un numero de estados finitos al igual que los smbolos del alfabeto.

Autmata Finito Deterministico

Autmata Finito No Deterministico

Tratamiento de errores
Nombre ilegales de identificadores. Nmeros incorrectos. Errores de ortografa en palabras reservadas. Fin de archivo.