Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SUPERIOR DE COATZACOALCOS
ING. EN SISTEMAS
COMPUTACIONALES
DOCENTE
ARTURO IVAN GRAJALES VAZQUEZ
MATERIA
LENGUAJES Y AUTOMATAS I
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
si un nodo interior etiquetado por A, posee como hijos los nodos etiquetados por X1,X2,
Xn , entonces A X1,X2, Xn es una produccin de la gramtica, en donde Xi , representa
smbolo terminal o no terminal.
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 existe una derivacin desde el smbolo inicial que contiene X, es decir, existe $ * X
donde , *
Variables generativas:
Si existe una derivacin desde el la variable que produce una sentencia , es decir, existe X
* donde *T.
Variables tiles:
Si existe una derivacin desde el smbolo inicial usando que produce una sentencia , es
decir, existe $ * X * donde , * y *T.
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.
En otras palabras, el operador F IRST 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.
Y sobre todo, el compilador debe producir un mensaje de error que permita al programador
encontrar y corregir fcilmente los elementos (sintcticamente) incorrectos de su programa.
Errores Sintcticos.
Muchos errores de naturaleza sintctica Recuperacin: Al producirse un error el compilador debe
ser capaz de informar del error y seguir compilando. (Ideal).
El manejo de errores de sintaxis es el ms complicado desde el punto de vista de la creacin de
compiladores. Nos interesa que cuando el compilador encuentre un error, se recupere y siga
buscando errores. Por lo tanto el manejador de errores de un analizador sintctico debe tener como
objetivos:
Indicar los errores de forma clara y precisa. Aclarar el tipo de error y su localizacin.
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:
Conversin de tipos: A veces es necesario transformar el tipo de una expresin para utilizar
correctamente un operador o para pasar de forma adecuada un parmetro a una funcin.
Coercin: Es una conversin de tipos que realiza de forma implcita el propio compilador. Si
es el programador el que realiza la conversin se tratar entonces de una conversin
explcita.
Funciones polimrficas: Son aquellas que trabajan con argumentos cuyo tipo puede
cambiaren distintas llamadas a la funcin.
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 analticaescrita en una notacin
similar a la BNF. Yacc genera el cdigo para el analizador sintctico en el Lenguaje de
programacin C.