PRESENTACIÓN ICONOS
Arely Guillen
Created on August 31, 2024
More creations to inspire you
WWII TIMELINE WITH REVIEW
Presentation
BLENDED LEARNING
Presentation
TAKING A DEEPER DIVE
Presentation
WWII JUNE NEWSPAPER
Presentation
AUSSTELLUNG STORYTELLING
Presentation
HISTORY OF THE EARTH
Presentation
3 TIPS FOR AN INTERACTIVE PRESENTATION
Presentation
Transcript
1.3 Comrobación de tipos en expreciones
Lengusjes Automatas IIAnalisis Semantico
La comprobación de tipos verifica que las operaciones y funciones se apliquen correctamente a los tipos de datos correspondientes, mientras que los conceptos de L-value y R-value ayudan a distinguir entre ubicaciones de memoria y los valores que esas ubicaciones almacenan.
Introduccion
Las reglas de tipos de un lenguaje aseguran que los operadores o funciones se apliquen correctamente al número y tipo de operandos.Ejemplo: En una expresión como 5 + 2.5, el compilador puede insertar una conversión de tipo (coerción) para convertir 5 a 5.0 para asegurar que la operación de punto flotante sea válida.
Comprobacion de tipos
Ejemplo: En la expresión 2 * 3.14, el entero 2 se convierte a 2.0 para realizar la multiplicación de punto flotante.
Una coerción ocurre cuando el tipo de un operando se convierte automáticamente al tipo esperado por el operador.
Coerciones
R-value:
L-value:
Representa el valor real que se almacena en una ubicación de memoria. Aparece en el lado derecho de una asignación.
Representa una ubicación de memoria (por ejemplo, una variable) donde se puede almacenar un valor. Debe estar en el lado izquierdo de una asignación.
Ejemplo: En la asignación i = i + 1, i es un L-value en el lado izquierdo, y i + 1 es un R-value en el lado derecho.
L-value y R-value
Ejemplo: En Java, el operador + representa la suma cuando se aplica a números, pero la concatenación cuando se aplica a cadenas.
Sobrecarga de Operadores
Un operador se considera sobrecargado cuando tiene diferentes significados dependiendo del contexto.
Ejemplo de instrucción de tres direcciones: x = y op z, donde x, y, y z pueden ser nombres de variables, constantes, o temporales generados por el compilador.
El código de tres direcciones es una representación intermedia utilizada en compiladores para simplificar la generación de código máquina.
Código de Tres Direcciones
Las instrucciones específicas para manejar arreglos en el código de tres direcciones son:
x[y] = z (Asignar a una posición de un arreglo) x = y[z] (Obtener el valor de una posición de un arreglo)
Manejo de Arreglos en Código de Tres Direcciones
Conclusión
La comprobación de tipos y el manejo de conversiones y sobrecarga son aspectos críticos en el diseño de un lenguaje de programación y en la construcción de compiladores. El uso de código de tres direcciones permite una síntesis eficiente de las instrucciones para facilitar la generación de código máquina, mejorando así la eficiencia y robustez del compilador.