Professional Documents
Culture Documents
Expresiones de Tipos
Un tipo compuesto es denotado por una expresin
Conversin de Tipos
Conversin implcita de un tipo a otro tipo
Ejemplo int A;
float B; B = B + A
Dos tipos de convercin widening conversions narrowing conversions
Widening conversions
Conversiones sin prdida de informacin
Narrowing conversions
Conversiones que pueden perder informacin
puede evaluar ascendentemente, calculando los atributos (todos ellos sintetizados) conforme el programa de entrada es analizado .
los valores de los atributos sintetizados asociados a cada uno de los smbolos gramaticales. En el momento en el que se lleve a cabo una reduccin, se calcularn los valores de los nuevos atributos sintetizados (del no terminal de la izquierda de la produccin) en funcin de los atributos que estn en la pila (de los no terminales de la parte derecha, entre otros).
calculan descendentemente en el rbol sintctico. Se asigna un valor a un atributo del nodo hijo 2 X para que, en aquellas reglas en las que ste aparezca en la parte izquierda de la produccin, herede el valor asignado.
a la que se accede desde las reglas semnticas. Las operaciones de la tabla de smbolos son insertar y buscar
aproximadamente en dos categoras: errores sintcticos y errores semnticos. Los errores sintcticos incluyen tokens olvidados o colocados de manera incorrecta, tal como el parntesis derecho olvidado en la expresin aritmtica (2+3 .
expresiones y variables no declaradas (en la mayora de los lenguajes), tal como la asignacin x = 2, donde x es una variable de tipo arreglo.
Id.Num1
Id.num2 id.Suma Constante.5
null
Null Nul 5 Id.Num1+id.n um2 Id.suma+cons tante.5
ejercicios
Proporcione dos ejemplos ms de errores de cada clase en un lenguaje de su eleccin. 2. Seleccione un compilador con el que est familiarizado y determine si se enumeran todos los errores sintcticos antes de los errores semnticos o si los errores de sintaxis y de semntica estn entremezclados. 3. Escriba un programa en java que realiza el promedio de un arreglo y sintetice semnticamente los smbolos
1.
las instrucciones respectivas) y determine los errores semnticos que marcaran cada lenguaje int num1; int num2; int suma; num1=Integer.parseInt(t2.getText()); suma=suma + num2; t3.setText(Integer.toString(suma)); suma=suma+5;