Está en la página 1de 25

REPBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIN SUPERIOR


CONVENIO IUTECP - UNERG
REA EN INGENERIA EN INFORMTICA
SECCIN: 01
















AUTORES:
JESS PREZ C.I.V.- 14.330.151
LINN CONTRERAS C.I.V.- 16.658.184
HCTOR PARRA C.I.V.- 17.650.700
KAREN E. LEN C. C.I.V.- 18.936.185



GUATIRE, SEPTIEMBRE DE 2014

NDICE

Portada..Pg. (1)

ndicePg. (2)

Introduccin.Pg. (3)

Contenido.Pg. ( )

ConclusinPg. ( )

Bibliografa..Pg. ( )

















INTRODUCCIN





























ANLISIS LEXICOGRFICO

Un analizador lxico y/o analizador lexicogrfico (en ingls scanner) es la primera
fase de un compilador consistente en un programa que recibe como entrada el cdigo
fuente de otro programa (secuencia de caracteres) y produce una salida compuesta
de tokens (componentes lxicos) o smbolos. Estos tokens sirven para una posterior etapa
del proceso de traduccin, siendo la entrada para el analizador sintctico (en ingls parser).

La especificacin de un lenguaje de programacin a menudo incluye un conjunto de
reglas que definen el lxico. Estas reglas consisten comnmente en expresiones
regulares que indican el conjunto de posibles secuencias de caracteres que definen un token
o lexema.

En algunos lenguajes de programacin es necesario establecer patrones para
caracteres especiales (como el espacio en blanco) que la gramtica pueda reconocer sin que
constituya un token en s.

FUNCIONES DE ANALIZADOR LEXICOGRFICO

El analizador lxico es la primera fase de un compilador. Su principal funcin
consiste en leer los caracteres de entrada y elaborar como salida una secuencia de
componentes lxicos que utiliza el analizador sintctico para hacer el anlisis. Esta
interaccin, suele aplicarse convirtiendo al analizador lxico en una subrutina o corrutina
del analizador sintctico. Recibida la orden Dame el siguiente componente lxico del
analizador sintctico, el analizador lxico lee los caracteres de entrada hasta que pueda
identificar el siguiente componente lxico.


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



FICHAS Y LEXEMAS

FICHAS




LEXEMA
Representan cadenas de caracteres en el programa fuente que se pueden tratar juntos
como una unidad lxica. Un lexema es una secuencia de caracteres en el programa fuente
con la que concuerda el patrn para un componente lxico.

ERRORES DE PATRONES

Regla que describe el conjunto de lexemas que pueden representar a un determinado
componente lxico en los programas fuente. En otras palabras, es la descripcin del
componente lxico mediante una regla.

EXPRESIONES REGULARES

Las expresiones regulares se utilizan para describir los componentes lxicos de un
lenguaje o tokens. Las expresiones regulares utilizan varios tipos de operadores para definir
los componentes lxicos:

- Parntesis. Para agrupar smbolos
- Operacin concatenacin.
- Se permite la concatenacin de cadenas.
- Operacin alternativa. Se representa por, y permite la eleccin entre dos o ms
alternativas.

Con estos elementos podemos definir los componentes lxicos. Por ejemplo, para
desarrollar la expresin regular para identificador, definimos su patrn y a partir se define
su expresin regular.

MTODO DE THOMPSON

El Mtodo de Thompson es una manera sistemtica de construir un Autmata
Finito M que acepta el mismo lenguaje que una Expresin Regular dada.

Para una expresin regular s Hacemos la transformacin N(s) sobre un rbol de
sintaxis abstracta de la expresin recorriendo los nodos en orden de profundidad primero
(depth first).

Para un smbolo a hacemos:



Para un nodo | con subrboles s y t hacemos:


Para un nodo con subrboles s y t hacemos:


Para un nodo * con subrbol s hacemos:


Ejemplo

Para la expresin regular:
((|a)b*)*

Construimos el siguiente rbol de sintaxis abstracta:



Para los nodos , a, y b, construimos los siguientes autmatas:





Para el nodo | construimos el siguiente autmata:


Para el nodo * hacemos:


Para el nodo hacemos:

Finalmente, para el * en el nodo raz hacemos:



UNIDAD V: ANLISIS ASCENDENTE

GRAMTICAS LL (k)


CONJUNTOS FIRST (k)

CONDICIN LL (k)

CONDICIN FUERTE LL (k)



ELIMINACIN DE LA RECURSIN A LA IZQUIERDA

La recursividad sobre todo por izquierda ya sea en un paso o ms de un paso es un
efecto no deseado en una gramtica.
El proceso de eliminacin de la recursividad por izquierda consta de los siguientes pasos:

1) Eliminamos la recursividad por izquierda en las producciones recursivas en un paso.
2) Eliminamos la recursividad por izquierda en las producciones recursivas en ms de un
paso.

1) Eliminacin de la recursividad por izquierda en un paso:
Eliminaremos la recursividad por izquierda en las producciones de unmismo
smbolo no terminal.

Para cada , si las producciones de A son:


Donde los No comienzan con A
Se crea un nuevo smbolo No Terminal A . En donde ahora
Y el nuevo conjunto de reglas de produccin se obtendr a travs del siguiente
procedimiento:



Ejemplo:
Dada la Gramtica



Las dos primeras reglas son recursivas por lo tanto se crear un nuevo smbolo no
Terminal E y el nuevo conjunto de smbolos no terminales quedar:



Se debern eliminar todas las producciones de E dentro del conjunto P de
producciones de la gramtica, y se deber obtener el nuevo conjunto P de producciones de
la gramtica. Aplicando el procedimiento descripto.
Dnde:







Entonces para completar la definicin de la nueva gramtica equivalente a la dada,
pero sin producciones recursivas por izquierda en un paso nos queda:



Prueba del Ejemplo:

Veremos ahora como una cadena es aceptada por ambas gramticas G y G




Vemos entonces que la cadena a , sera aceptada por ambas gramticas G y G.

2) Eliminacin de la recursividad por izquierda en ms de un paso:

An eliminando, la recursividad por la izquierda de las producciones de todos los
smbolos no terminales, puede haber recursividad en ms de un paso.

Para mostrar el procedimiento de aplicacin lo haremos a travs de un ejemplo:

Ejemplo:




a) Se debern disponer a los smbolos No terminales en algn orden:
b) Se crean dos ciclos anidados que van a ir de 1 hasta n siendo n la cantidad de smbolos
no terminales de la gramtica.
.i = 1 ..n
.j = 1 ..n

Recorremos ambos ciclos y:
Si i j :

reemplazar cada produccin por :

Dnde:
Son todas las reglas de Aj
Eliminar la recursividad por izquierda de las Ai

En nuestro ejemplo


Donde n = 2 por lo tanto
.i = 1 .. 2
.j = 1 .. 2

comenzamos ambos ciclos:


1) En el ejemplo nos quedara:

De existir producciones de E que en el lado derecho comienza con E habra que sustituir la
E de la parte derecha por todas las producciones que llevan a E

2) Ahora hay que eliminar la posible recursin por izquierda en

= E pero no
hayContinuamos con el incremento de la variable del ciclo interno.
* i = 1 ; (

= E) ; j = 2 (

= T)

1) En el ejemplo nos quedara:
E := T

Esto da lugar a un nuevo conjunto de producciones que se obtienen reemplazando T
en la parte derecha por todos sus producciones.
E := E + E ;
E := (E) + E ;
E := E * E ;
E := (E) * E ;
E := var ;
E := num ;
T := E ;
T := (E) ;

2) Ahora eliminamos la recursividad por izquierda de E. Se eliminan todas las producciones
de E y se las reemplaza por las que se obtienen de haber incluido el nuevo smbolo no
Terminal E (Se aplica el procedimiento de eliminacin de recursividad en un paso).

E := var E ;
E := num E ;
E := var ;
E := num ;

E:= + E E ;
E:= * E E ;
E:= + E ;
E:= * E ;

E := (E) + E ;
E := (E) * E ;
T := E ;
T := (E) ;
E := (E) + E E;
E := (E) * E E;


1) Al reemplazar las producciones:

Queda:
E := var E ;
E := num E ;
E := var ;
E := num ;

E := (E) + E ;
E := (E) * E ;
E := (E) + E E;
E := (E) * E E;

E:= + E E ;
E:= * E E ;
E:= + E ;
E:= * E ;

T := (E) ;
T: = var E ;
T: = num E ;
T := var ;
T := num ;
T := (E) + E E ;
T := (E) * E E ;
T := (E) + E ;
T := (E) * E ;

2) Ahora hay que eliminar las recursiones de T pero no hay.




1) Al reemplazar las producciones:

2) No quedan:

Por lo tanto nuestra nueva gramtica sin producciones recursivas ya sean en un paso
o varios pasos nos queda:

Con el conjunto de producciones de del punto anterior.


ANLISIS RECURSIVO DESCENDENTE

Mtodo descendente en el que se ejecuta un conjunto de mtodos recursivos para
procesar la entrada. A cada no terminal de la gramtica se asocia un mtodo. La secuencia
de mtodos llamados durante el procesamiento de la entrada define implcitamente un rbol
de anlisis sintctico.

Adicionalmente se tiene:
- Un mtodo de tratamiento de error
- Un mtodo de lectura de un smbolo de entrada (lxico)

Para una gramtica:
G = (T, N, P, S)
N = {S, N1, N2, N3}

En la siguiente se muestra el esquema de un analizador sintctico descendente
recursivo. En este esquema los mtodos se muestran sin parmetros pero considerando que
en su mayora son recursivos, normalmente requieren parmetros:
Esquema para Anlisis recursivo descendente
Programa Analizador sintctico
Mtodo Error
Mtodo Lxico
Mtodo S
Mtodo N1
Mtodo N2
Teora Lenguajes 10
Mtodo N3
Inicio
Lxico
S
Fin

Cada mtodo de un analizador descendente recursivo realiza dos tareas:
Decide la produccin a usar analizando el smbolo de entrada. Si el smbolo de
entrada pertenece a First(N) entonces se usa la produccin con lado derecho N. Si hay un
conflicto entre dos lados derechos entonces en esta gramtica no se puede usar el mtodo
descendente recursivo.

Usa una produccin imitando el lado derecho:
- Un no terminal resulta en la llamada al mtodo asociado
- Un terminal coincidente al smbolo de entrada hace que se lea el siguiente componente
lxico.

Ejemplo de un analizador recursivo descendente:
Dada la siguiente gramtica:
Tipo simple

array [ simple ] of tipo
Teora Lenguajes 12
array [ simple ] of tipo


num punto num

Se tendran los siguientes mtodos:
Mtodo Empareja (t)
Si Entrada = t
Entonces Lxico (Entrada)
Sino Error
F mtodo

Mtodo Error
Escribir (Error de sintxis)
Fmetodo

Mtodo Tipo
caso Entrada vale
integer, char, num: simple
: Empareja() Empareja( id)
array: Empareja(array) Empareja([)
array: Empareja(array) Empareja([)
simple
Empareja(]) Empareja(of)
tipo
otro: Error
fmetodo

ANALIZADOR PREDICTIVO NO RECURSIVO
Es posible construir un analizador sintctico predictivo no recursivo (APNR)
manteniendo una pila para no usar la recursividad.
Estos analizadores buscan la produccin a usar dentro de una tabla de anlisis
sintctico. Tambin se conocen como analizadores sintcticos dirigidos por tablas.

Un mtodo descendente dirigido por tablas es el mtodo que se basa en gramticas LL(1)


- $ es usado:
* Como ltimo carcter de entrada
* Como Fondo de la pila
- Inicialmente en la pila est el smbolo inicial sobre el $
- M es una matriz cuyo valor indica la produccin a usar, es decir M[A, a] = Produccin a
usar con A no terminal y a terminal.
Dependiendo del elemento de la entrada (a) y el elemento que se encuentre en el tope de la
pila (X), el analizador realizar una accin diferente:
Si X = a = $
Entonces Fin de anlisis sintctico
Si X = a $
Entonces desempilar X y pedir otro token
Si X N y M[X, a] = X Y1Y2 Ym , Yi (N T)
EntoncesDesempila X Empila Ym Y2 Y1


El algoritmo podra ser:
Repetir si X en T
Entonces si X = a
EntoncesDesempilar
Lxico
Sino Error
Sino si M[X, a] = X Y1 Y2 Ym , Yi
EntoncesDesempila X
Empila Ym... EmpilaY2 EmpilaY1
Sino Error
Hasta (X = $) y (a = $)

Son gramticas con condiciones especiales que permiten realizar un anlisis sintctico
descendente no recursivo conocido con el nombre de parserLL(1).
- L se examina la cadena de entrada de izquierda a derecha
- L usa la derivacin ms a la izquierda
- 1 slo necesita un smbolo de la entrada

Para la siguiente gramtica:
1. E T E
2. T F T'
3. F ( E )
4. F a
5. E' + T E
6. E'
7. T' * F T
8. T'

Se tiene la matriz M (los nmeros representan el nmero asociado a la produccin)

Para procesar a + a * a la pila sera



Para construir la matriz M es necesario realizar el clculo de los:
- Conjuntos First
- Conjuntos Follow

Este tipo de matrices slo es posible definirla, sin Teora Lenguajes 39 ambigedades
para gramticas LL(1)
ALGORITMOS DE ANLISIS PREDICTIVO

Se basan en el anlisis de los datos actuales e histricos para hacer predicciones sobre
futuros eventos. Dichas predicciones raramente suelen ser afirmaciones absolutas,
parecindose ms a eventos y su probabilidad de que suceda en el futuro.

En el mundo de los negocios los modelos predictivos explotan los patrones de
comportamiento encontrados en el pasado para poder identificar riesgos y oportunidades.
Los modelos capturan las relaciones entre muchos factores permitiendo capturar riesgos
potenciales asociados a un conjunto de condiciones, guiando as a la toma de decisiones.
En la banca, tpicamente, antes de conceder un crdito, prstamo o hipoteca, evalan el
perfil de riesgo de la persona usando un modelo de puntuacin. Los modelos de puntuacin
tienen en cuenta el comportamiento histrico del cliente, como puede ser el saldo de su
cuenta bancaria a lo largo del tiempo, descubiertos, impagados, as como datos estticos
del cliente.

Los algoritmos de anlisis predictivo se utilizan en multitud de campos,
aseguradoras, telecomunicaciones, agencias de viaje, farmacuticas, mdicas, etc.


UNIDAD VI: ANLISIS DESCENDENTE

AGARRADEROS

IMPLEMENTACIN POR PILA DE UN ANALIZADOR CORRIMIENTOS-
REDUCCIN

PREFIJOS VIABLES

GRAMTICAS LR (K)
CONFLICTOS DURANTE EL ACR

MTODO SLR

ELEMENTOS LR
















BIBLIOGRAFIA
Anlisis Lexicogrfico
http://es.wikipedia.org/wiki/Analizador_l%C3%A9xico
Funciones de Analizador Lexicogrfico
http://compiladorsistemas.blogspot.com/2010/11/funcion-del-analisis-lexico-
grafico.html
Fichas y Lexemas
Lexemas: http://compiladoresasignatura.blogspot.com/2011/05/unidad-2-analisis-
lexico.html

Errores de Patrones
http://compiladoresasignatura.blogspot.com/2011/05/unidad-2-analisis-lexico.html
Expresiones Regulares
http://compiladoresasignatura.blogspot.com/2011/05/unidad-2-analisis-lexico.html
Mtodo de Thompson

http://www.suigeneris.org/UCABTI/Metodo%20de%20Thompson.html

UNIDAD V: ANLISIS ASCENDENTE
GRAMTICAS LL (k)
Conjunto First (k)
Condicin LL (k)
Condicin fuente LL (k)

También podría gustarte