You are on page 1of 7

Divisin: (1) INGENIERA EN SISTEMAS COMPUTACIONALES Grupo: (2) 361-V

Asignatura: (3) METODOS DE INVESTIGACIN I Docente: (4) Enrique Martnez

Nombre y nmero de control: (5) Solis Escamilla Martin Eduardo 153107047

Fecha de entrega: (6)

Competencia No.: (7) 2 Descripcin: (8) INVESTIGACIN

Indicador de alcance: (9) -

Evidencia de aprendizaje: (10) INVESTIGACIN DOCUMENTAL

UNIDAD 1 ANALISIS SEMANTICO


1.1 Arboles de expresiones ................................................................................Error! Bookmark not defined.
1.2 Acciones semnticas de un analizador sintctico .......................................................................................... 5
1.3 Comprobaciones de tipos en expresiones ..................................................................................................... 6
1.4 Pila semntica en un analizador sintctico .................................................................................................... 7
1.5 Esquema de traduccin ............................................................................................................................... 10
1.6 Generacin de la tabla de smbolo y de direcciones ................................................................................... 11
1.7 Manejo de errores semnticos ....................................................................................................................... 5
Bibliografa. ...................................................................................................................................................... 12
ANALISIS SEMANTICO 2

UNIDAD 1
1.1 Arboles de expresiones

Los rboles de expresiones representan el cdigo de nivel del lenguaje en forma de datos. Los datos se almacenan en una
estructura con forma de rbol. Cada nodo del rbol de expresin representa una expresin, por ejemplo, una llamada al
mtodo o una operacin binaria, como x < y.

Inmutabilidad de los rboles de expresiones

Los rboles de expresiones son inmutables. Esto significa que si desea modificar un rbol de expresin, debe construir un
nuevo rbol de expresin; para ello, deber copiar el rbol existente y modificarlo. Puede utilizar un visitante de rbol de
expresin para que recorra el rbol de expresin existente. Para obtener ms informacin, vea Cmo: Implementar un
visitante de rbol de expresin y Cmo: Modificar rboles de expresiones.

Al introducir la expresin debemos de tomar en cuenta las siguientes caractersticas:

La raz siempre debe ser un operador.


Las hojas siempre deben ser operados
Los nodos deben estar etiquetados por operadores
Si un operador tiene mayor prioridad que la raz se coloca como hijo.
Si un operador tiene igual o menor prioridad que un nodo se coloca como padre.
Un nodo puede contener como hijo otro subrbol que contiene un pequea expresin.

En los rboles de expresin, la sucesin del pre orden de etiquetas nos da lo que se conoce como la forma prefijo de una
expresin Anlogamente, la sucesin postor den de las etiquetas de un rbol expresin nos da lo que se conoce como la
representacin postfijo de una expresin

Finalmente, el inorden de una expresin en un rbol de expresin nos da la Expresin infijo en s misma, pero sin
parntesis Construccin de un rbol de expresin

1.2 Acciones semnticas de un analizador sintctico

Definicin de un analizador sintctico: es la fase del analizador que se encarga de chequear el texto de entrada en base a
una gramtica dada. Y en caso de que el programa de entrada sea vlido, suministra el rbol sintctico que lo reconoce.

En teora, se supone que la salida del analizador sintctico es alguna representacin del rbol sintctico que reconoce la
secuencia de Token suministrada por el analizador lxico.

En la prctica, el analizador sintctico tambin hace:

Acceder a la tabla de smbolos (para hacer parte del trabajo del analizador semntico).
Chequeo de tipos (del analizador semntico).
Generar cdigo intermedio.
Generar errores cuando se producen.
En definitiva, realiza casi todas las operaciones de la compilacin. Este mtodo de trabajo da lugar a los mtodos
de compilacin dirigidos por sintaxis.

Manejo de errores sintcticos

Los errores sintcticos son dados por una expresin aritmtica o parntesis no equilibrados. El manejo de errores de
sintaxis es el ms complicado desde el punto de vista dela creacin de compiladores. Nos interesa que cuando el
ANALISIS SEMANTICO 3

compilador encuentre un error, se recupere y siga buscando errores. Por lo tanto el manejador de errores de un analizador
sintctico tiene como objetivos:

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

1.3 Comprobaciones de tipos en expresiones

La labor de comprobacin de tipos consiste en conferir a las construcciones sintcticas del lenguaje la semntica de
tipificacin y en realizar todo tipo de comprobaciones de dicha ndole. Por su naturaleza, sin embargo, sta se encuentra
repartida entre la fase de anlisis semntico y la generacin de cdigo intermedio.

Comprobaciones estticas

Las comprobaciones estticas recogen el compendio de todas aquellas tareas de carcter semntico que, por su naturaleza,
pueden ser realizadas directamente durante la fase de compilacin mediante el uso de los artefactos y mecanismos propios
de dicha fase. Este tipo de comprobaciones son beneficiosas puesto que confieren seguridad a la ejecucin del programa.

Caractersticas

-Diferente de la dinmica en runtime.


-Ejemplo: comprobacin de tipos, flujo de control, unicidad.

Comprobaciones dinmicas:

Las comprobaciones dinmicas son aquellas que no se realizan durante la fase de compilacin y se delegan al momento
de la ejecucin del programa. Ello requiere generar cdigo ejecutable especficamente diseado para realizar tales
comprobaciones. Los lenguajes con una carga excesiva de comprobaciones dinmicas generan programas ms largos,
lentos e inseguros en ejecucin.

1.4 Pila semntica en un analizador sintctico

Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de
programacin. Estas estructuras pueden implementarse mediante arrays o listas enlazadas. Pila: coleccin de datos a los
cuales se les puede acceder mediante un extremo, que se conoce generalmente como tope. Las pilas tienen dos
operaciones bsicas:

Push (para introducir un elemento)


Pop (para extraer un elemento)

Sus caractersticas fundamentales es que al extraer se obtiene siempre el ltimo elemento que acabe de insertarse. Por esta
razn tambin se conoce como estructuras de datos LIFO, una posible implementacin mediante listas enlazadas seria
insertando y extrayendo siempre por el principio de la lista.

Las pilas se utilizan en muchas aplicaciones que utilizamos con frecuencia. Las pilas y colas son estructuras de datos que
se utilizan generalmente para simplificar ciertas operaciones de programacin. Estas estructuras pueden implementarse
mediante arrays o listas enlazadas. Un analizador sintctico es un autmata de pila que reconoce la estructura de una
cadena de componentes lxicos. En general, el analizador sintctico inicializa el compilador y para cada smbolo de
entrada llama al analizador morfolgico y proporciona el siguiente smbolo de entrada.
ANALISIS SEMANTICO 4

Al decir pila semntica no se refiere a que hay varios tipos de pila, hace referencia a que se debe programar nica y
exclusivamente en un solo lenguaje, es decir, no podemos mezclar cdigo de C++ con Visual Basic.

Ventajas

Los problemas de integracin entre los subsistemas son sumamente costosos y muchos de ellos no se solucionan
hasta que la programacin alcanza la fecha lmite para la integracin total del sistema.
Se necesita una memoria auxiliar que nos permita guardar los datos para poder hacer la comparacin.

Objetivo terico

Es construir un rbol de anlisis sintctico, este raramente se construye como tal, sino que las rutinas semnticas
integradas van generando el rbol de Sintaxis abstracta. Se especifica mediante una gramtica libre de contexto.

El anlisis semntico detecta la validez semntica de las sentencias aceptadas por el analizador sintctico. El analizador
semntico suele trabajar simultneamente al analizador sintctico y en estrecha cooperacin. Se entiende por semntica
como el conjunto de reglas que especifican el significado de cualquier sentencia sintcticamente correcta y escrita en un
determinado lenguaje. La evaluacin de las reglas semnticas define los valores de los atributos en los nodos del rbol de
anlisis sintctico para la cadena de entrada. Una regla semntica tambin puede tener efectos colaterales, por ejemplo,
imprimir un valor o actualizar una variable global.

Compatibilidad de tipos

Durante la fase de anlisis semntico, el compilador debe verificar que los tipos y valores asociados a los objetos de un
programa se utilizan de acuerdo con la especificacin del lenguaje.

Adems debe detectar conversiones implcitas de tipos para efectuarlas o insertar el cdigo apropiado para efectuarlas as
como almacenar informacin relativa a los tipos de los objetos y aplicar las reglas de verificacin de tipos.

Analizadores descendentes:

Parten del axioma inicial de la gramtica, se va descendiendo utilizando las derivaciones izquierdas, hasta llegar a
construir la cadena analizada. Se va construyendo el rbol desde sus nodos terminales. Es decir, se construye desde los
smbolos de cadena hasta llegar al axioma de la gramtica.

1.5 Esquema de traduccin

Un esquema de traduccin es una gramtica independiente de contexto en la que se asocian atributos con los smbolos
gramaticales y se insertan acciones semnticas encerradas entre llaves { } dentro de los lados derechos de las
producciones. Los esquemas de traduccin pueden tener tantos atributos sintetizados como heredados.

Cuando se disea un esquema de traduccin, se deben respetar algunas limitaciones para asegurarse de que el valor de un
atributo est disponible cuando una accin se refiera a l. Estas limitaciones, motivadas por las definiciones con atributos
por la izquierda, garantizan que las acciones no hagan referencia a un atributo que an no haya sido calculado. El ejemplo
ms sencillo ocurre cuando slo se necesitan atributos sintetizados, en este caso, se puede construir el esquema de
traduccin creando una accin que conste de una asignacin para cada regla semntica y colocando esta accin al final del
lado derecho de la produccin asociada.

Traduccin descendente

Se trabaja con esquema de traduccin en lugar de hacerlo con definiciones dirigidas por sintaxis, as que se puede ser
explcito en cuanto al orden en que tienen que lugar las acciones y las evaluaciones de los atributos. Eliminacin de la
ANALISIS SEMANTICO 5

recursividad izquierda de un esquema de traduccin Como la mayora de los operadores aritmticos son asociativos por la
izquierda, es natural utilizar gramticas recursivas por la izquierda para las expresiones. La transformacin se aplica a
esquemas de traduccin con atributos sintetizados.

Para el anlisis sintctico descendente, se supone que una accin se ejecuta en el mismo momento en que se expandira un
smbolo en la misma posicin. Un atributo heredado de un smbolo debe ser calculado por una accin que aparezca antes
que el smbolo, y un atributo sintetizado del no terminal de la izquierda se debe calcular despus de que hayan sido
calculados todos los atributos de los que depende.

1.6 Generacin de la tabla de smbolo y de direcciones

Las tablas de smbolos (tambin llamadas tablas de identificadores y tablas de nombres), realizan dos importantes
funciones en el proceso de traduccin: verificar que la semntica sea correcta y ayudar en la generacin apropiada de
cdigo. Ambas funciones se realizan insertando o recuperando desde la tabla de smbolos los atributos de las variables
usadas en el programa fuente. Estos atributos, tales como: el nombre, tipo, direccin de almacenamiento y dimensin de
una variable, usualmente se encuentran explcitamente en las declaraciones o ms implcitamente a travs del contexto en
que aparecen los nombres de variables en el programa.

1.7 Manejo de errores semnticos

Es una de las misiones ms importantes de un compilador, aunque, al mismo tiempo, es lo que ms dificulta su
realizacin. A veces unos errores ocultan otros. A veces un error provoca una avalancha de muchos errores que se
solucionan con el primero.

Bibliografa.

http://arantxa.ii.uam.es/~alfonsec/docs/compila5.htm
ANALISIS SEMANTICO 6

CUESTIONARIO

Que representan los arboles de expresiones?

Los rboles de expresiones representan el cdigo de nivel del lenguaje en forma de datos.

Qu es el analizador sintctico?

Es la fase del analizador que se encarga de chequear el texto de entrada en base a una gramtica dada. Y en caso de que el
programa de entrada sea vlido, suministra el rbol sintctico que lo reconoce.

Cmo Funciona el operador en el rbol?

Si la raz es un operando, insertar nuevo en ese nodo, y convertir el operando en el hijo izquierdo, si no si hay un
parntesis abierto insertar nuevo en la ltima hoja derecha y colocar operando como hijo izquierdo.

Si el carcter anterior es parntesis izquierdo si el siguiente carcter es parntesis derecho si solo hay un operador en el
rbol nuevo se convierten raz, si no se inserta en el ltimo nodo derecho, y el nodo se convierten hijo izquierdo.

Si no se cumple ninguna de las condiciones anteriores si la raz es de igual prioridad o menor prioridad convertir la raz
en el hijo izq. de nuevo si no la prioridad del nodo raz es mayor al de nuevo insertar nuevo como hijo derecho y colocar
el nodo reemplazado como hijo izquierdo.

Cmo Opera el rbol?

Si el rbol est vaco hacer raz a nuevo, si no recorrer el rbol por la derecha hasta llegar a un nodo con hojas, si la hoja
izquierda, no est etiquetada colocar operando, si no colocarlo en la hoja derecha.

Qu hace el analizador sintctico?

1. Acceder a la tabla de smbolos (para hacer parte del trabajo del analizador semntico).
2. Chequeo de tipos (del analizador semntico).
3. Generar cdigo intermedio.
4. Generar errores cuando se producen.
5. En definitiva, realiza casi todas las operaciones de la compilacin. Este mtodo de trabajo da lugar a los mtodos de
compilacin dirigidos por sintaxis.

Cul es la gramtica que acepta el analizador?

1. N = No terminales.
2. T = Terminales.
3. P = Reglas de Produccin.
4. S = Axioma Inicial.

Qu hacen las comprensiones estticas?

Recogen el compendio de todas aquellas tareas de carcter semntico que, por su naturaleza, pueden ser realizadas
directamente durante la fase de compilacin mediante el uso de los artefactos y mecanismos propios de dicha fase. Este
tipo de comprobaciones son beneficiosas puesto que confieren seguridad a la ejecucin del programa.

Qu son las comprobaciones dinamicas?


ANALISIS SEMANTICO 7

Son aquellas que no se realizan durante la fase de compilacin y se delegan al momento de la ejecucin del programa.
Ello requiere generar cdigo ejecutable especficamente diseado para realizar tales comprobaciones. Los lenguajes con
una carga excesiva de comprobaciones dinmicas generan programas ms largos, lentos e inseguros en ejecucin.

Qu son las pilas y colas?

Las pilas y colas son estructuras de datos que se utilizan generalmente para simplificar ciertas operaciones de
programacin. Estas estructuras pueden implementarse mediante arrays o listas enlazadas. Pila: coleccin de datos a los
cuales se les puede acceder mediante un extremo, que se conoce generalmente como tope.

Cules son las dos operaciones de pilas bsicas?

1. Push (para introducir un elemento)


2. Pop (para extraer un elemento)

Qu es un esquema de traduccin?

Es una gramtica independiente de contexto en la que se asocian atributos con los smbolos gramaticales y se insertan
acciones semnticas encerradas entre llaves { } dentro de los lados derechos de las producciones. Los esquemas de
traduccin pueden tener tantos atributos sintetizados como heredados.

Cmo trabaja la Traduccin descendente?

Trabaja con esquema de traduccin en lugar de hacerlo con definiciones dirigidas por sintaxis, as que se puede ser
explcito en cuanto al orden en que tienen que lugar las acciones y las evaluaciones de los atributos. Eliminacin de la
recursividad izquierda de un esquema de traduccin Como la mayora de los operadores aritmticos son asociativos por la
izquierda, es natural utilizar gramticas recursivas por la izquierda para las expresiones. La transformacin se aplica a
esquemas de traduccin con atributos sintetizados.

Cules son las funciones del traductor?

Verificar que la semntica sea correcta y ayudar en la generacin apropiada de cdigo. Ambas funciones se realizan
insertando o recuperando desde la tabla de smbolos los atributos de las variables usadas en el programa fuente. Estos
atributos, tales como: el nombre, tipo, direccin de almacenamiento y dimensin de una variable, usualmente se
encuentran explcitamente en las declaraciones o ms implcitamente a travs del contexto en que aparecen los nombres
de variables en el programa.

Cules son los dos criterios de errores semnticos?

1. Pararse al detectar el primer error.


2. Detectar todos los errores de una pasada

Cmo es la estructura de una tabla?

Contiene una lista de valores de atributos que son asociados con una variable en particular. Las clases de los atributos que
aparecen en una tabla de smbolos dependen en algn grado de la naturaleza del lenguaje de programacin para el cual se
escribe el compilador.

You might also like