Beruflich Dokumente
Kultur Dokumente
LENGUAJES Y AUTOMATAS 1
Investigacin Unidad 6: Anlisis Sinttico
Introduccin.3
Conclusin..18
Bibliografa.18
2
UNIDAD 6 Anlisis Sinttico.
Introduccin
En concepto veremos lo que es Gramtica Libre de Contexto y un ejemplo; son lenguajes libres
de contexto y estn definidos por medio de gramticas libres de contexto. rboles de derivacin,
permite mostrar grficamente cmo se puede derivar cualquier cadena de un lenguaje a partir
del smbolo distinguido de una gramtica que genera ese lenguaje. Forma Normal de Chomsky
es Una sentencia w se denomina ambigua si puede obtenerse por ms de un rbol de derivacin.
Al igual veremos lo que son los diagramas de sintaxis y algunos ejemplos seguidos de la
eliminacin de la ambigedad y sus ejemplos tambin la generacin de matriz predictiva (calculo
First y follow) y los tipos de analizadores sintcticos y el manejo de errores y por ltimo los
generadores de analizadores sintcticos estos con los puntos de los temas que veremos a
continuacin.
La mayora lenguajes de programacin, son lenguajes libres de contexto y estn definidos por
medio de gramticas libres de contexto. Contexto se refiere al entorno en que se encuentra,
como influye el entorno en el significado de cada parte.
3
Es una gramtica formal en la que cada regla de produccin es de la forma:
Nw
Definicin de la Gramtica
Produccin
Donde cualquier smbolo No Terminal del lado derecho de la produccin puede ser remplazado
por cualquier definicin de ese mismo terminal del lado derecho.
Ejemplo: S E
EE+E
E num
Ejemplo
Un ejemplo de una Gramtica Libre del contexto que reconoce operaciones de suma y
multiplicacin con nmeros enteros, como {5, 52+3, (1+3)*4}
4
Donde E es una expresin Numrica
Num es un nmero
Digito es cualquier entero de 0 a 9
Un rbol de derivacin permite mostrar grficamente cmo se puede derivar cualquier cadena
de un lenguaje a partir del smbolo distinguido de una gramtica que genera ese lenguaje.
Un rbol es un conjunto de puntos, llamados nodos, unidos por lneas, llamadas arcos. Un arco
conecta dos nodos distintos. Para ser un rbol un conjunto de nodos y arcos debe satisfacer
ciertas propiedades:
Hay un nico nodo distinguido, llamado raz (se dibuja en la parte superior) que no tiene
arcos incidentes.
Todo nodo c excepto el nodo raz est conectado con un arco a otro nodo k, llamado el
padre de c (c es el hijo de k). El padre de un nodo se dibuja por encima del nodo.
Todos los nodos estn conectados al nodo raz mediante un nico camino.
Los nodos que no tienen hijos se denominan hojas, el resto de los nodos se denominan
nodos interiores.
Sea G = (N,T,S,P) una gramtica libre de contexto, sea A N una variable. Diremos que un rbol
TA = (N,E) etiquetado es un rbol de derivacin asociado a G si verifica las propiedades siguientes:
Para cada cadena del lenguaje generado por una gramtica es posible construir (al menos) un
rbol de derivacin, en el cual cada hoja tiene como rtulo uno de los smbolos de la cadena.
5
Para cada cadena del lenguaje generado por una gramtica es posible construir (al menos) un
rbol de derivacin, en el cual cada hoja tiene como rtulo uno de los smbolos de la cadena.
Si un nodo est etiquetado con una variable X y sus descendientes (ledos de izquierda a derecha)
en el rbol son X1,,Xk , entonces hay una produccin X X1Xk en G.
T U N U {}
4. Si un nodo n tiene etiqueta A y n1n2...nk respectivamente son hijos del vrtice n, ordenados
de izquierda a derecha, con etiquetas x1,x2..xk respectivamente, entonces: A x1x2...xk debe
ser una produccin en P
Ejemplo
y el rbol de derivacin:
6
Relacin entre derivaciones y rboles
Si leemos las etiquetas de las hojas de izquierda a derecha tenemos una sentencia. Llamamos a
esta cadena la produccin del rbol de derivacin.
Teorema. Sea G=(N,T,S,P) una GLC. Entonces (de S se deriva ) si y slo si hay un rbol
de derivacin en la gramtica G con la produccin .
Si w es una cadena de L(G) para la gramtica libre de contexto G, entonces w tiene al menos un
rbol de derivacin. Referido a un rbol de derivacin particular, w tendr una nica derivacin
a la izquierda y otra nica a la derecha.
Ejemplo
Derivacin a la izquierda:
Derivacin a la derecha:
Una gramtica G se denomina ambigua si el lenguaje que genera contiene alguna sentencia
ambigua.
Una GLC se dice que est en Forma Normal de Chomsky (FNC) si todas sus producciones son de
la forma:
7
Excepcionalmente se permite la produccin
Hacer que en la parte derecha de las producciones de longitud mayor o igual que dos slo
haya terminales.
Trocear estas producciones para que tengan longitud dos.
Algoritmo FNC:
Se aade la produccinn Ca a
Se cambia i por Ca en A 1..n
2. Para cada produccin de la forma A B1...Bm, m 3
a) Se aaden (m-2) no terminales D1, D2, ..., Dm-2 (distintos para cada produccin)
b) La produccin A B1...Bm se reemplaza por A B1D1, D1 B2D2, ... Dm-2 Bm-
1Bm
Las gramticas se pueden expresar de diferentes formas, en ocasiones podemos llegar al mismo
resultado utilizando gramticas que difieren en su estructura, una norma para estandarizar la
gramtica es la Forma Normal de Chomsky.
Si L es un lenguaje independiente del contexto que no contiene la cadena vaca, entonces existe
una gramtica G independiente del contexto tal que L(G)=L y el lado derecho de cualquier regla
de reescritura en G consiste en un solo terminal o exactamente dos no terminales.
Se dice que una gramtica cuyas reglas de reescritura se adhieren a las restricciones del teorema
2.4 tiene la FORMA NORMAL DE CHOMSKY (FNC o CNF), llamada as en honor a Noam Chomsky.
Por ejemplo, la siguiente gramtica cuyo smbolo inicial es S tiene la forma normal de Chomsky.
S XM
M SY
Xx
Yy
8
Mientras que la siguiente gramtica que genera el mismo lenguaje no la tiene
S xSy
S xy
S zMz
MN
M yMy
Nx
Paso 1
S ZMZ
MN
Zz
Yy
Nx
Paso 2
Lo siguiente es reemplazar la regla S ZMZ por el par de reglas S ZR; R MZ, mientras que M YMY
se reemplaza por M YP; P MY para obtener la siguiente gramtica:
S ZR
R MZ
9
MN
M YP
P MY
Zz
Yy
Nx
Paso 3
S ZR
R MZ
Mx
M YP
P MY
Zz
Yy
Nx
Los diagramas sintcticos, de sintaxis o diagramas del ferrocarril son una forma de representar
una gramtica libre de contexto. Representan una alternativa grfica para la Forma de Backus-
Naur (BNF, por sus siglas en ingls) o la Forma Extendida de Backus-Naur (EBNF, por sus siglas en
ingles).
10
Los diagramas de ferrocarril son ms comprensibles para la mayora de la gente. Alguna parte de
la popularidad del formato de intercambio de datos JSON se debe a su representacin en los
diagramas de ferrocarril.
Un segundo mtodo alternativo para desplegar las producciones de ciertas gramticas de tipo 2
es el diagrama de sintaxis. sta es una imagen de las producciones que permite al usuario ver las
sustituciones en forma dinmica, es decir, verlas como un movimiento a travs del diagrama. En
la figura 10.5 se ilustrar los diagramas que resultan de la traduccin de conjuntos de
producciones tpicos, que son, por lo general, todas las producciones que aparecen en el lado
derecho de algn enunciado BNF.
Ambigedad Transitoria:
Este tipo de ambigedad puede llegar a ser eliminada realizando una serie de transformaciones
sobre la gramtica original. Una vez que se logra lo anterior, la gramtica queda lista para ser
reconocida por la mayor parte de los analizadores sintcticos. (Se le considera "ambigedad"
porque existen mtodos para realizar anlisis sintctico que no aceptan gramticas con estas
caractersticas)
11
6.5 Eliminacin de la ambigedad.
Una GLC es ambigua si existe una cadena w L(G) que tiene ms de una derivacin por la
izquierda o ms de una derivacin por la derecha o si tiene dos o ms arboles de derivacin.
En casi de y que toda cadena w L (G) tenga un nico rbol de derivacin no es ambigua.
Tipos de Ambigedad
Dentro del estudio de gramticas existen dos tipos fundamentales de ambigedad, los cuales son:
Ambigedad Inherente:
Las gramticas que presentan este tipo de ambigedad no pueden utilizarse para lenguajes de
programacin, ya que por ms transformaciones que se realicen sobre ellas, nunca se podr
eliminar completamente la ambigedad que presentan:
Un lenguaje L es inherentemente ambiguo si todas sus gramticas; si existe cuando menos una
gramtica no ambigua para L, L no es ambiguo.
12
6.6 Generacin de matriz predictiva ( clculo first y follow)
FIRST: Sea G := (V; ; Q0; P) una gramtica libre de contexto. Para cada forma sentencial (V
U )* y para cada k N definiremos la funcin.
En otras palabras, el operador FIRST k asocia a cada forma sentencial los primeros k smbolos de
cualquier forma terminal alcanzable desde mediante derivaciones masa la izquierda".
FOLLOW: Con las mismas notaciones anteriores, para cada forma sentencial (V U )*
definiremos la funcin FOLLOWG GK () del modo siguiente.
13
6.7 Tipos de analizadores sintcticos
Analizador Descendente:
Se construye el rbol de anlisis sinttico partiendo del smbolo inicial y aplicando las
producciones mediante derivaciones por la izquierda, el smbolo a expandir es el que esta mas a
la izquierda.
Analizador Ascendente:
Ejemplo:
G= ({+,*, ID, (,)}, {E, T, P},E, P)P={E:=E+T | T; T:=T*P | P; P:= ID | (E) }FraseID + ( ID * ID )
14
6.8 Manejo de errores
Un compilador es un sistema que en la mayora de los casos tiene que manejar una entrada
incorrecta. Sobre todo, en las primeras etapas de la creacin de un programa, es probable que el
compilador se utiliza para efectuar las caractersticas que debera proporcionar un buen sistema
de edicin dirigido por la sintaxis, es decir, para determinar si las variables han sido declaradas
antes de usarla, o si faltan corchetes o algo as.
Hay que sealar que los posibles errores ya deben estar considerados al disear un lenguaje de
programacin. Por ejemplo, considerar si cada proposicin del lenguaje de programacin
comienza con una palabra clave diferente (excepto la proposicin de asignacin, por supuesto).
Sin embargo, es indispensable lo siguiente:
Errores Sintcticos.
15
Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localizacin.
Recuperarse del error, para poder seguir examinando la entrada.
No ralentizar significativamente la compilacin.
Un buen compilador debe hacerse siempre teniendo tambin en mente los errores que se
pueden producir; con ello se consigue:
Errores semnticos.
Un lenguaje con comprobacin fuerte de tipos es capaz de garantizar que los programas se
pueden ejecutar sin errores de tipo, por lo que los errores de tipo se detectarn siempre en
tiempo de compilacin.
Como mnimo, ante un error, un comprobador de tipos debe informar de la naturaleza y posicin
del error y recuperarse para continuar con la comprobacin del resto del programa a analizar.
16
6.9 Generadores de analizadores sintcticos
ANTLR:
(ANother Tool for Language Recognition; en espaol "otra herramienta para reconocimiento de
lenguajes") es una herramienta creada principalmente por Terence Parr, que opera sobre
lenguajes, proporcionando un marco para construir reconocedores (parsers), intrpretes,
compiladores y traductores de lenguajes a partir de las descripciones gramaticales de los mismos
(conteniendo acciones semnticas a realizarse en varios lenguajes de programacin).
GNU bison:
Grammatica:
JavaCC:
Yacc:
Es un programa para generar analizadores sintcticos. Las siglas del nombre significan Yet
Another Compiler-Compiler, es decir, "Otro generador de compiladores ms". Genera un
analizador sintctico (la parte de un compilador que comprueba que la estructura del cdigo
fuente se ajusta a la especificacin sintctica del lenguaje) basado en una gramtica analtica
17
escrita en una notacin similar a la BNF. Yacc genera el cdigo para el analizador sintctico en el
Lenguaje de programacin C.
Conclusin
En este documento encontramos e investigamos sobre los puntos establecido en esta unidad que
son Gramtica Libre de Contexto, rboles de derivacin, Formas normales de Chomsky,
Diagramas de sintaxis, Eliminacin de la ambigedad , Generacin de matriz predictiva (clculo
First y follow), Tipos de analizadores sintcticos, Manejo de errores, Generadores de analizadores
sintcticos y se eligi uno en particular, entenderlo despus explicarlo o realizar algn tipo de
ejemplo para el mejor manejo gracias a estos tipos de ejemplos esta unidad se comprendi y se
entendi ya que se dieron a conocer algunos ejemplos en este documento y que se resumi todos
los archivos que se encontraron hasta poder entender lo que posiblemente sea entendible y
comprensible para cualquier estudiante o cualquier persona que necesite de algn documento
que hable sobre analizadores lxicos y otros tipos de lexemas el documento que se establece es
para mejorar y reforzar la gramtica de entendimiento de tipos de lenguajes sintcticos y sus
tipos de usos que se dan a conocer.
Bibliografa
Evander Flores. (Mar 06, 2015). Gramticas Libres del Contexto. marzo del 2012, de ninguno Sitio
web: http://documents.mx/documents/gramaticas-libres-de-contexto.html
Ma. Alejandra. (lunes, 14 de marzo de 2011). Arboles de derivacin . 14 de marzo, de 23:36 Sitio
http://10380054.galeon.com/u6.htm
http://teodelacomp.blogspot.mx/2011/03/37-eliminacion-de-la-ambiguedad.html
http://www-lt.ls.fi.upm.es/procesadores/Documentos/FirstFollow.pdf
http://slideplayer.es/slide/1479999/
18
Teora de Autmatas y lenguajes formales Federico Simmross Wattenberg
(fedesim@infor.uva.es) Universidad de Valladolid sitio web:
http://www.infor.uva.es/~mluisa/talf/docs/labo/L8.pdf
19