Vous êtes sur la page 1sur 7

INSTITUTO TCNOLOGICO SUPERIOR DE CD.

CONSTITUCIN

CARRERA: Ing. Sistemas Computacionales

MATERIA: Programacin de sistemas DOCENTE: MSC Amrico Antonio Len Barrn

ALUMNA: Wendy Prez Reyes

GRUPO: 7SM

Anlisis semntico
Para saber lo que es un analizador semntico y como funciona primero tenemos que saber lo que es semntica. La semntica se refiere a los aspectos del significado, sentido o interpretacin de signos lingsticos como smbolos, palabras, expresiones o representaciones formales. El anlisis semntico se trata de determinar el tipo de los resultados intermedios, comprobar que los argumentos que tiene un operador pertenecen al conjunto de los operadores posibles, y si son compatibles entre s, etc. En definitiva, comprobar que el significado de lo que se va leyendo es vlido. El analizador semntico se realiza posteriormente al sintctico y mucho ms difcil de formalizar que ste. La salida terica de la fase de anlisis semntico sera un rbol semntico.

Un rbol semntico es una estructura jerrquica en la cual se registran las operaciones que implica u operan dentro del programa fuente. En cada una de las ramas del rbol semntico se registra el valor o significado que este debe tener, y el anlisis semntico se encarga de terminar cual de los valores registrados en las ramas es aplicable

Verificacin de tipos en expresiones


Los sistemas de tipos son las reglas de un lenguaje que permiten asignar tipos de las distintas partes de un programa y verificar su correccin. Un sistema de tipos es usado para la verificacin de tipos en expresiones, el cual incorpora: Construcciones estticas del lenguaje Nocin de tipos Reglas para asignar tipos a construcciones del lenguaje

La verificacin de los tipos de datos se hace asignando el valor de tipo de cada una de los componentes lxicos. Estos valores se comparan para verificar que los tipos de datos coincidan y sean congruentes, de lo contrario no se pueden realizar los clculos. Que el nmero de argumentos haga match con el nmero de parmetros formales y que los tipos correspondientes sean equivalentes. Si se llama como expresin, debe retornar un tipo. Cada acceso a una variable debe hacer match con la declaracin (arreglo, estructura, etc.). Los identificadores en una expresin deben ser evaluables. LHS de una asignacin debe ser asignable. En una expresin los tipos de las variables, tipos de retorno de mtodos y de operadores deben ser compatibles. Ejemplos de tipo de expresiones: Enteros. Booleanos. Floats. caracteres.

type_error (Tipo especial que produce un error). void (Tipo bsico que denota la ausencia de un valor).

Conversin de tipos
Existen dos tipos de conversiones: Conversin IMPLCITA realizada por el compilador Conversin EXPLICITA realizada por el programador

Las conversiones nos permiten que una expresin de un tipo sea tratada como una expresin de otro tipo, dichas conversiones pueden ser implcitas o explcitas, por ejemplo la conversin de un tipo int a long es implcita, sin embargo la conversin de un tipo long a un tipo int es explcita, esto debido a que un int puede ser expresado en formato long sin que haya perdida de precisin en la operacin, sin embargo si intentamos convertir un numero long a int puede haber perdida de precisin y se necesita una conversin explcita.

En algunos tipos es posible almacenar simplemente el valor sin una conversin de tipos; lo que se denomina conversin automtica. Esto slo es posible en Java si el compilador reconoce que la variable destino tiene la suficiente precisin para contener el valor origen, como almacenar un valor byte en una variable int. A esto se le llama ensanchamiento o promocin, dado que el tipo ms pequeo se ensancha o promociona al tipo compatible ms grande. Si por el contrario, se desea asignar un valor de variable int a una variable byte se necesita realizar una conversin de tipos explcita. A esto se le llama estrechamiento, dado que se estrecha explcitamente el valor para que quepa en el destino. La conversin de un tipo se realiza poniendo delante un nombre de tipo entre parntesis, por ejemplo, (tipo) valor. El cdigo siguiente demuestra la conversin de tipos de int a byte. Si el valor del entero fuese

mayor que el rango de un byte, se reducira al mdulo (resto de la divisin) del rango de byte. int a = 100; byte b = (byte) a;

Administracin tabla de smbolos


Un compilador necesita guardar y usar la informacin de los objetos que se va encontrando en el texto fuente, como variables, etiquetas, declaraciones de tipos, etc. Esta informacin se almacena en una estructura de datos interna conocida como tabla de smbolos. Una tabla de smbolos es una estructura de datos que usa el proceso de traduccin de un lenguaje de programacin, por un compilador o un intrprete, donde cada smbolo en el cdigo fuente de un programa est asociado con informacin tal como la ubicacin, el tipo de datos y el mbito de cada variable, constante o procedimiento. Los smbolos en la tabla de smbolos pueden referirse a constantes, a funciones o a tipos de datos en el cdigo fuente de un programa. El administrador de la tabla de smbolos se encarga de manejar los accesos a la tabla de smbolos, en cada una de las etapas de compilacin de un programa.

Manejo de errores semnticos


Los errores que puede detectar el analizador semntico son aquellos que violan las reglas de una gramtica independiente del contexto. Ya hemos mencionado que algunas de las caractersticas de un lenguaje de programacin no pueden enunciarse con reglas independientes del contexto, ya que dependen de l; por ejemplo, la restriccin de que los identificadores deben declararse previamente. Por lo tanto, los principales errores semnticos son: 1. Identificadores no definidos; 2. Operadores y operandos incompatibles. Es mucho ms difcil introducir mtodos formales para la recuperacin de errores semnticos que para la recuperacin de errores sintcticos, ya que a menudo la recuperacin de errores semnticos es ad hoc. No obstante, puede requerirse que, por

lo menos, el error semntico sea informado al programador, que se le ignore y que, por tanto, se suprimir la generacin de cdigo. Sin embargo, la mayora de los errores semnticos pueden ser detectados mediante la revisin de la tabla de smbolos, suponiendo un tipo que se base en el contexto donde ocurra o un tipo universal que permita al identificador ser un operando de cualquier operador del lenguaje. Al hacerlo, evitamos la produccin de un mensaje de error cada vez que se use la variable no definida. Si el tipo de un operando no concuerda con los requisitos de tipo del operador, tambin es conveniente remplazar el operando con una variable ficticia de tipo universal.

Ejemplo: Errores en el sentido de la construccin No tiene sentido Dim A, B A = Guatemala B = A*8

Vous aimerez peut-être aussi