Want to make creations as awesome as this one?

presentación interactiva sobre mi interpretación de la lectura del libro (Aho, Lam, Sethi, & Ullman, 2008, pags 98,99)

Transcript

lenguajes y automatas ii

1.3 Comprobaciones de tipos en expresiones

Efrain castañeda Floresno. de control 210600517°B ingenieria en sistemas

Comprobaciones de tipos en expresiones

Las comprobaciones de tipos en expresiones se refieren a la forma en que un lenguaje de programación verifica el tipo de datos de las variables y expresiones en tiempo de compilación o en tiempo de ejecución.

R-value (Right Value) Definición: Un R-value (valor a la derecha) hace referencia a cualquier valor que no tiene una dirección de memoria identificable. Estos son valores temporales que no pueden estar a la izquierda de una asignación. Ejemplos: Literales como 5, expresiones como x + 2, y resultados de funciones son R-values. En la expresión x = 5, el 5 es un R-value.

L-value (Left Value) Definición: Un L-value (valor a la izquierda) se refiere a una expresión que tiene una ubicación en la memoria. Es un valor que puede estar a la izquierda de una asignación. Puedes pensar en un L-value como un "candidato para la asignación". Ejemplos: Variables como x, arrays, y objetos son L-values porque pueden ser leídos y modificados. En la expresión x = 5, x es un L-value.

L-value & R-value

Las reglas sobre los tipos de un lenguaje aseguran que un operador o función se aplique al número y tipo de operandos correctos, si es necesaria la conversión entre tipos. Por ejemplo: cuando se suma un entero a un número de punto flotante, entonces el comprobador de tipos puede insertar un operador en el árbol sintáctico para representar esa conversion.

Comprobación de tipos

Sobrecarga

La sobrecarga se refiere a la capacidad de un lenguaje de programación para asociar múltiples significados a una misma operación o función, dependiendo del contexto en el que se utilice

El operador + en Java representa la suma cuando se aplica a enteros; significa concatenación cuando se aplica a cadenas. Se dice que un símbolo está sobrecargado si tiene distintos significados, dependiendo de su contexto. Por ende, + esta sobrecargado en Java. Para determinar el significado de un operador sobrecargado, hay que considerar los tipos conocidos de sus operandos y resultados.

la coerción y la sobrecarga

Coerciones

La coerción se refiere a la conversión automática de un tipo de dato a otro por parte del lenguaje de programación.

En una expresión como 2 * 3.14, la transformación usual convertir el entero 2 en un número de punto flotante equivalente, 2. O, y después realizar una operación de punto flotante con el par resultante de operandos de punto flotante.

+info

+info

Una vez que se construyen los árboles de sintaxis, se puede realizar un proceso más detallado de análisis y síntesis mediante la evaluación de los atributos, y la ejecución de fragmentos de código en los nodos del árbol. Instrucciones de tres direcciones El código de direcciones es una secuencia de instrucciones de la forma: x= y op z en donde x, y, z Son nombres, Constantes o valores temporales generados por el compilador; y op representa a un operador.

Código de tres direcciones

CONCLUSION

las comprobaciones de tipos son esenciales para garantizar la integridad y la seguridad del código. La correcta gestión de coerciones y el entendimiento de la sobrecarga de operadores así como de los conceptos de L-value y R-value, son fundamentales para el diseño de programas funcionales y confiables. Los desarrolladores debemos ser conscientes de cómo estas características pueden influir en el comportamiento del código, eligiendo herramientas y enfoques que se adapten a las necesidades del proyecto y al tipo de lenguaje.

bibliografia: libro (Aho, Lam, Sethi, & Ullman, 2008, pags 98,99)

link paginas del libro: https://drive.google.com/file/d/13nOgcRnNt-RaaX24VuRNl7W9nMMfI64x/view?usp=classroom_web&authuser=0