Digital Technology Presentation
jose alejandro rosales gaspar
Created on September 5, 2024
More creations to inspire you
WORLD WILDLIFE DAY
Presentation
FOOD AND NUTRITION
Presentation
IAU@HLPF2019
Presentation
SPRING IN THE FOREST 2
Presentation
HUMAN RIGHTS
Presentation
BLENDED PEDAGOGUE
Presentation
VALENTINE'S DAY PRESENTATION
Presentation
Transcript
Construcción de compiladores.
Contextualize Your Topic with a Subtitle
Comprobación de tipos
Las reglas sobre los tipos de un lenguaje aseguran que un ope- rador 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 flo- tante, entonces el comprobador de tipos puede insertar un operador en el árbol sintáctico para representar esa conversión. A continuación hablaremos sobre la conversión de tipos, usando el término común "coerción".
Contextualize Your Topic with a Subtitle
Comprobación de tiposComprobación de tipos
L-value y R-value
Las reglas sobre los tipos de un lenguaje aseguran que un ope- rador 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 flo- tante, entonces el comprobador de tipos puede insertar un operador en el árbol sintáctico para representar esa conversión.
Contextualize Your Topic with a Subtitle
Comprobación de tiposComprobación de tipos
L-value y R-value
En general, tal vez haya que realizar comprobaciones estáticas complejas, para lo cual primero hay que construir una repre- sentación intermedia y después analizarla. Hay una diferencia entre el significado de los identificadores a la izquierda y el lado derecho de una asignación. En cada una de las siguientes asignaciones: i = 5; i = i + 1; el lado derecho especifica un valor entero, mientras que el lado izquierdo especifica en dónde se va a almacenar el valor. Los términos l-value y r-value se refieren a los valores que son apropiados en los lados izquierdo y derecho de una asignación, respectivamente. Es decir, los r-value son lo que generalmente consideramos como "valores", mientras que los l-value son las ubicaciones.
Contextualize Your Topic with a Subtitle
La comprobación estática debe asegurar que el lado izquierdo de una asignación denote a un l-value. Un identificador como i tiene un l-value, al igual que un acceso a un arreglo como a[2]. Pero una constante como 2 no es apropiada en el lado izquierdo de la asignación, ya que tiene un r-value, pero no un value. it is interactive'
Contextualize Your Topic with a Subtitle
Comprobación de tipos
La comprobación de tipos asegura que el tipo de una construcción coincida con lo que espera su contexto. Por ejemplo, en la siguiente instrucción if: if (expr) instr se espera que la expresión expr tenga el tipo boolean. Las reglas de comprobación de tipos siguen la estructura operador/operando de la sintaxis abstracta. Suponga que el operador rel representa a los operadores relacionales como <=. La regla de tipos para el grupo de operadores rel es que sus dos operandos deben tener el mismo tipo, y el resultado tiene el tipo booleano.
Contextualize Your Topic with a Subtitle
2.8.4 Código de tres direcciones
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. Para ilustrar las posibilidades, vamos a recorrer árboles sin- tácticos para generar código de tres direcciones. En específico, le mostraremos cómo escribir funciones para procesar el árbol sintáctico y, como efecto colateral, emitir el código de tres direcciones necesario. Instrucciones de tres direcciones El código de tres direcciones es una secuencia de instrucciones de la forma x = y op z en donde x, y y z son nombres, constantes o valores temporales generados por el compilador; y op representa a un operador. Manejaremos los arreglos usando las siguientes dos variantes de instrucciones: x [y]=z x = y [z]
Contextualize Your Topic with a Subtitle