miércoles, 14 de febrero de 2024

EXAMEN

 




1.3.-COMPROBACIONES DE TIPOS EN EXPRESIONES

 

La labor de comprobación de tipos consiste en conferir a las construcciones sintácticas del lenguaje la semántica de tipificación y en realizar todo tipo de comprobaciones de dicha índole. Por su naturaleza, sin embargo, ésta se encuentra repartida entre la fase de análisis semántico y la generación de código intermedio.

·         Comprobaciones estáticas

Las comprobaciones estáticas recogen el compendio de todas aquellas tareas de carácter semántico que, por su naturaleza, pueden ser realizadas directamente durante la fase de compilación mediante el uso de artefactos y mecanismos propios de dicha fase. Este tipo de comprobaciones son beneficiosas puesto que confieren seguridad a la ejecución del programa.

Características

- Diferente de la dinámica en runtime.

- Ejemplo: comprobación de tipos, flujo de control, unicidad.

·         Comprobaciones dinámicas

Las comprobaciones dinámicas son aquellas que no se realizan durante la fase de compilación y se delegan al momento de la ejecución del programa. Ello requiere generar código ejecutable específicamente diseñado para realizar tales comprobaciones. Los lenguajes con una carga excesiva de comprobaciones dinámicas generan programas más largos, lentos e inseguros en ejecución.

Verificación de tipos

Comprueba la compatibildad de tipos de todas las expresiones del código fuente recuperando la información durante la gestión de declaraciones. Además se asegura de que no existe en el programa ninguna referencia a ningún símbolo no declarado.

Inferencia de tipos

En lenguajes sin tipificación de variables o con sobrecarga se aplican tareas de inferencia de tipos en el nivel gramatical de las expresiones para resovler el tipo de datos de la expresión resultante en función del contexto de evaluación.

jueves, 8 de febrero de 2024

Investigacion acciones sematicas de los árboles de expresión

 

análisis semántico utiliza como entrada el árbol sintáctico detectado para comprobar restricciones de tipo y otras limitaciones semánticas y preparar la generación de código. 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í, es decir, comprobará que el significado de lo que se va leyendo es válido

Las acciones semánticas son procedimientos que se adjuntan a nodos en un árbol de sintaxis y se ejecutan durante el análisis sintáctico. Se utilizan para agregar significado a la estructura del árbol de sintaxis.

Los tipos comunes de acciones semánticas incluyen:

·         Verificación de tipos: Esto se usa para asegurarse de que los operados de un operador tengan los tipos correctos. Por ejemplo, la acción semántica para la suma podría verificar que ambos operados sean números.

·         Evaluación de expresiones: Esto se usa para calcular el valor de una expresión. Por ejemplo, la acción semántica para la suma podría calcular la suma de los dos operados.

·         Generación de código: Esto se usa para generar código de máquina para una expresión. Por ejemplo, la acción semántica para la suma podría generar código para cargar los dos operados en la pila y luego sumar ellos.

Las acciones semánticas se pueden implementar de diversas formas. Un enfoque común es usar una tabla de acciones semánticas, que es una tabla que mapea nodos en el árbol de sintaxis a acciones semánticas. Otra El enfoque es usar un lenguaje de acción semántica, que es un lenguaje especial que se usa para escribir acciones semánticas.

Las acciones semánticas son una parte importante de los compiladores. Se utilizan para agregar significado a la estructura del árbol de sintaxis y para generar código de máquina para una fuente programa.

Aquí hay un ejemplo de un árbol de expresión para la expresión a + b:

    +

   / \

  a   b

Las acciones semánticas se pueden adjuntar a cualquier nodo del árbol. Por ejemplo, se podría adjuntar una acción semántica al nodo + para verificar que los operados a y b sean números. También se podría adjuntar una acción semántica al nodo + para calcular la suma de a y b.

Las acciones semánticas son una herramienta poderosa para agregar significado a la estructura del árbol de sintaxis. Se pueden utilizar para realizar una variedad de tareas, incluida la verificación de tipos, la evaluación de expresiones y la generación de código.

4.3 Lenguaje Máquina

  4.3 Lenguaje Máquina Es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. El lenguaje máquina solo es ent...