Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIN UNIDAD I
Esta asignatura busca proveer al estudiante de herramientas, conocimientos y habilidades
necesarias para desarrollar un compilador con base en los conocimientos previos de la
asignatura lenguajes y autmatas I.
La aportacin de esta materia es relevante en el mbito del desarrollo de software de
sistemas. Es indispensable distinguir que la carrera de Ingeniera en Sistemas Computacionales
se basa no slo en el desarrollo de software comercial y administrativo, sino tambin en el
desarrollo de software cientfico y para el desarrollo tecnolgico. Esta materia se ubica en la
segunda categora y es indispensable desarrollar software en estos campos para preparar a
los egresados y tengan la posibilidad de cursar posgrados de alto nivel.
La asignatura trata de concretar un traductor iniciado en la materia previa para que el estudiante
comprenda que es capaz, mediante tcnicas bien definidas, de crear su propio lenguaje de
programacin.
La materia consta de cuatro bloques estructurados y definidos que abarcan la ltima etapa de
la fase de anlisis y sntesis. Al trmino del semestre se debe obtener un compilador o traductor
completo, funcionando de acuerdo a ciertas restricciones y requisitos.
ANALIZADOR SEMNTICO
La sintaxis del lenguaje C indica que las expresiones se pueden formar con un conjunto de
operadores y un conjunto de elementos bsicos. Entre los operadores, con sintaxis binaria infija,
se encuentran la asignacin, el producto y la divisin. Entre los elementos bsicos de una
expresin existen los identificadores y las constantes enteras sin signo (entre otros).
Que todos los identificadores que aparecen en la expresin hayan sido declarados en el
mbito actual, o en alguno de sus mbitos (bloques 2 ) previos.
Que la subexpresin de la izquierda sea semnticamente vlida, es decir, que sea un lvalue
3.
Que a los tipos de los identificadores base y altura se les pueda aplicar el operador de
multiplicacin. Un registro en C, por ejemplo, no sera vlido.
Deber inferirse el tipo resultante de la multiplicacin anterior. Al tipo inferido se le deber
poder aplicar el operador de dividir, con el tipo entero como multiplicando.
Deber inferirse el tipo resultante de la divisin y comprobarse si ste es compatible con el
tipo de superficie para llevar a cabo la asignacin. Como ejemplo, si superficie fuese entera
y division real, no podra llevarse a cabo la asignacin.
Sistema de Tipos
Reglas de un lenguaje que permiten asignar tipos a las distintas partes de un programa y
verificar su correccin.
Funciones Principales:
Reglas de un lenguaje que permiten asignar tipos a las distintas partes de un programa y
verificar su correccin.
Inferencia de tipos: calcular y mantener la informacin sobre los tipos de datos.
Verificacin de tipo: asegurar que las partes de un programa tienen sentido segn las reglas
de tipo del lenguaje.
Conversin de tipos explcita: transformacin del tipo de una expresin con un propsito
determinado.
Coercin: conversin de tipos que realiza de forma implcita el compilador.
En la prctica , ningn lenguaje es tan fuertemente tipado que permita una completa
comprobacin esttica.
Informacin de tipos dinmica : El compilador debe generar cdigo que realice la inferencia y
verificacin de tipos durante la ejecucin del programa que se est compilando.
Informacin de tipos esttica:
Ejemplo:
Todos los lenguajes permiten crear nuevos tipos complejos a partir de otros ms simples
mediante constructores de tipos:
Para analizar los diferentes tipos que intervienen dentro de un programa, el compilador debe
contar con una estructura interna que le permita manejar cmodamente las expresiones de
tipos.
Esta estructura interna:
Debe ser fcilmente manipulable, pues su creacin se realizar conforme se hace la lectura
del programa fuente.
Debe permitir comparar fcilmente las expresiones asignadas a distintos trozos de cdigo,
especialmente a los identificadores de variables..
Ejemplos:
Cada smbolo gramatical puede tener asociado un conjunto finito de atributos, que pueden
ser de los siguientes tipos:
o Su valor se calcula en funcin de los atributos de los nodos hijos.
o Heredados: su valor se calcula en funcin de los atributos de los hermanos y/o del nodo
padre.
Cada atributo tomara valores de un dominio.
Cada produccin llevara asociadas un conjunto de reglas semnticas.
Las relaciones de dependencia entre atributos, establecidas por las reglas semnticas, se
representaran mediante el Grafo de Dependencias.
ATRIBUTOS HEREDADOS
Una gramtica con atributos se denomina Gramtica L-Atribuida si cada atributo que se evala
cumple una de las siguientes condiciones:
Es un atributo sintetizado.
Dada una produccin A --> X1,X2XjXn, el atributo heredado asociado a Xj depende
nicamente de los atributos de X1,,Xj-1 y/o de atributos heredados asociados al smbolo
A.
ATRIBUTOS SINTETIZADOS
En el caso de los smbolos terminales de la gramtica, su atributo no es mas que el lexema
asociado al token reconocido por el analizador lxico.
Una gramtica con atributos se denomina Gramtica S-Atribuida si todos los atributos son
sintetizados. Siempre es posible transformar una Gramtica con Atributos en una Gramtica SAtribuida.
Ejemplos:
1. Atributos SINTETIZADOS y reglas para evaluacin de expresiones aritmticas.
2. Atributos HEREDADOS y reglas para propagacin de tipos.
ACTIVIDADES COMPLEMENTARIAS: