Академический Документы
Профессиональный Документы
Культура Документы
DE MISANTLA
SEMESTRE: 6 SEMESTRE
FECHA: 25/04/2015
Anlisis Sintctico.
6.1 GLC.
Gramticas Libres de Contexto (GLC), o de tipo 2: las reglas son de la forma X
, donde X es una variable y es una cadena que puede contener variables y
constantes. Estas gramticas producen los lenguajes Libres de Contexto
(abreviado LLC)
Herramienta formal que puede ser vista tanto desde un punto de vista
generador como estructurador.
G = (V, T, P, S)
S V, smbolo inicial
los nodo interiores del rbol estn etiquetados por los smbolos no
terminales
Propiedades
de
un
rbol
de
derivacin.
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.
rbol
de
derivacin.
Ejemplo:
Sea
G=(N,
T,
S,
P)
una
GLC
con
P:
ab|aSb
6.3
Formas
normales
de
Chomsky.
Una gramtica formal est en Forma normal de Chomsky si todas sus reglas de
produccin
son
de
alguna
de
las
siguientes
formas:
A
BC
Variables generativas:
Variables tiles:
6.4
Si existe una derivacin desde el smbolo inicial usando que produce una
sentencia , es decir, existe $ * X * donde , * y *T.
Diagramas
de
sintaxis
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).
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.
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.
Ejemplo: La gramtica S aS| Sa | a es ambigua porque aa tiene dos
derivaciones por la izquierda S aS aa S Sa aa.
Tipos
de
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.
6.6
Generacin
de
matriz
predictiva
(clculo
first
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.
Tipos
de
analizadores
sintcticos
Descendente:
Ascendente:
6.8
Manejo
de
errores.
Errores
Sintcticos.
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.
Veamos algunas de las operaciones a tener en cuenta en una comprobacin de
tipos:
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:
Es un programa generador de analizadores sintcticos de propsito general
perteneciente al proyecto GNU disponible para prcticamente todos los sistemas
operativos, se usa normalmente acompaado de flex aunque los analizadores
lxicos
se
pueden
tambin
obtener
de
otras
formas.
Grammatica:
Es un generador de analizadores sintcticos de C# y Java libre. Es similar a otras
herramientas como Yacc o ANTLR. Grammatica soporta el algoritmo LL(k) para
gramticas con un nmero ilimitado de tokens de anticipacin. Est bastante bien
probado, y ha sido auto compilado desde la versin 0.1. La documentacin
contiene una lista completa de caractersticas, as como una comparacin con
otros
generadores
de
analizadores.
JavaCC:
(Java Compiler Compiler) es un generador de analizadores sintcticos de cdigo
abierto para el lenguaje de programacin Java. JavaCC es similar a Yacc en que
genera un parser para una gramtica presentada en notacin BNF, con la