32
REPÙBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÒN SUPERIOR CONVENIO IUTECP - UNERG ÀREA EN INGENÌERIA EN INFORMÀTICA SECCIÓN: 01 AUTORES : JESÚS PÉREZ C.I.V.- 14.330.151 LINN CONTRERAS C.I.V.- 16.658.184 HÉCTOR PARRA C.I.V.- 17.650.700 KAREN E. LEÒN C. C.I.V.- 18.936.185

Trabajo de Interprete!!!

Embed Size (px)

Citation preview

REPBLICA BOLIVARIANA DE VENEZUELAMINISTERIO DEL PODER POPULAR PARA LA EDUCACIN SUPERIORCONVENIO IUTECP - UNERGREA EN INGENERIA EN INFORMTICASECCIN: 01

AUTORES:JESS PREZ C.I.V.- 14.330.151LINN CONTRERAS C.I.V.- 16.658.184HCTOR 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

Unanalizador lxicoy/oanalizador lexicogrfico(eninglsscanner) es la primera fase de uncompiladorconsistente en unprogramaque recibe como entrada elcdigo fuentede otro programa (secuencia de caracteres) y produce una salida compuesta detokens(componentes lxicos) o smbolos. Estostokenssirven para una posterior etapa del proceso de traduccin, siendo la entrada para elanalizador sintctico(en inglsparser).

La especificacin de unlenguaje de programacina menudo incluye un conjunto de reglas que definen ellxico. Estas reglas consisten comnmente enexpresiones regularesque 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 debede 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

LEXEMARepresentan 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

Lasexpresiones regularesse 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 paraidentificador,definimos su patrn y a partir se define su expresin regular.

MTODO DE THOMPSON

ElMtodo de Thompsones una manera sistemtica de construir unAutmata FinitoMque acepta el mismo lenguaje que unaExpresin Regulardada.

Para una expresin regularsHacemos 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 smboloa hacemos:

Para un nodo|con subrbolessythacemos:

Para un nodo con subrbolessythacemos:

Para un nodo*con subrbolshacemos:

Ejemplo

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

Construimos el siguiente rbol de sintaxis abstracta:

Para los nodos,a, yb, construimos los siguientes autmatas:

Para el nodo|construimos el siguiente autmata:

Para el nodo*hacemos:

Para el nodohacemos:

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 losNo comienzan con ASe crea un nuevo smbolo No Terminal A . En donde ahoraY 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 ..nRecorremos ambos ciclos y:Si i j :

reemplazar cada produccinpor :

Dnde:Son todas las reglas de AjEliminar la recursividad por izquierda de las AiEn nuestro ejemplo

Donde n = 2 por lo tanto.i = 1 .. 2.j = 1 .. 2comenzamos 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 E2) 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 descendentePrograma Analizador sintcticoMtodo ErrorMtodo LxicoMtodo SMtodo N1Mtodo N2Teora Lenguajes 10Mtodo N3InicioLxicoSFin

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 id array [ simple ] of tipoTeora Lenguajes 12array [ simple ] of tiposimple integer char num punto num

Se tendran los siguientes mtodos:Mtodo Empareja (t)Si Entrada = tEntonces Lxico (Entrada)Sino ErrorF mtodo

Mtodo ErrorEscribir (Error de sintxis)Fmetodo

Mtodo Tipocaso Entrada valeinteger, char, num: simple: Empareja() Empareja( id)array: Empareja(array) Empareja([)array: Empareja(array) Empareja([)simpleEmpareja(]) Empareja(of)tipootro: Errorfmetodo

ANALIZADOR PREDICTIVO NO RECURSIVOEs 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 sintcticoSi 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 EntoncesDesempilarLxicoSino ErrorSino si M[X, a] = X Y1 Y2 Ym , YiEntoncesDesempila X Empila Ym... EmpilaY2 EmpilaY1Sino ErrorHasta (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 E2. T F T'3. F ( E )4. F a 5. E' + T E6. E' 7. T' * F T8. 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 Lexicogrficohttp://es.wikipedia.org/wiki/Analizador_l%C3%A9xico Funciones de Analizador Lexicogrficohttp://compiladorsistemas.blogspot.com/2010/11/funcion-del-analisis-lexico-grafico.html Fichas y LexemasLexemas: http://compiladoresasignatura.blogspot.com/2011/05/unidad-2-analisis-lexico.html

Errores de Patroneshttp://compiladoresasignatura.blogspot.com/2011/05/unidad-2-analisis-lexico.html Expresiones Regulareshttp://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)