compiladores
G o o g l e automáticamente genera versiones html de documentos a medida que rastreamos la web.
Análisis Semántico
¿Cómo es el lenguaje?
Las dos primeras fases conceptuales de un compilador tienden a responder la pregunta de cómoes un lenguaje en términos de su estructura sintáctica y sus elementos léxicos constituyentes
¿Qué es el lenguaje?
Las tres fases subsiguientes tratan de dar un significado único, preciso y computable a cada construcción del lenguaje de manera que el programador sepa definir programas semánticamente útiles y coherentes
Análisis Semántico
¿Qué es la semántica de un lenguaje?
Es necesario definir computacionalmente la semántica de un lenguaje para que el compilador sepa interpretar cada posible código fuente del mismo. La forma más sencilla de hacer esto es asociar a cada posible construcción gramatical ciertas reglas que permitan traducirla en términos computables. Esto sólo es posible si se cumple el principio de traducción dirigido por la sintaxis
Traducción dirigida por lasintaxis
El significado de una construcción de un lenguaje está directamente relacionado con su estructura sintáctica según se representa en su árbol de análisis
Análisis Semántico
Las traducciones con significado computacional especifico se pueden clasificar en 2 grandes grupos dependiendo el momento en que se aplican dentro del ciclo de compilación
Tipos de acciones de traducciónsemántica
Tiempo de compilación (semántica estática)
Las traducciones en tiempo de compilación son acciones que se aplican sobre los artefactos del compilador y que tienen efecto durante el proceso de compilación
Tiempo de ejecución (semántica dinámica)
Las traducciones en tiempo de ejecución son acciones dirigidas a generar código ejecutable en tiempo de compilación para que se apliquen durantela ejecución del programa compilado
Traducción dirigida por la sintaxis
Análisis Semántico
Traducción dirigida por la sintaxis
Construcción Sintáctica
Traducción Semántica
Tipo
Ejemplo
Tiempo de compilación
Tiempo de ejecución
Declaración de constantes
CONST MAX = 100;
Registrar MAX como constante entera de valor 100
Declaración de tipos
TYPE TVector = ARRAY [1..MAX] OFINTEGER;
Registrar Tvector como tipo ARRAY de tamaño 100 y base INTEGER
Declaración de variables
VAR v : TVector;
Comprobar que Tvector existe como un tipo y registrar v como una variable de ese tipo
Declaración de procedimientos
PROCEDURE Sort (VAR v : TVector);
Registrar Sort como un procedimiento del ámbito en curso indicando la lista de tipos de los parámetros. Crear un nuevoámbito y registrar en él v como variable de tipo TVector
Análisis Semántico
Traducción dirigida por la sintaxis
Construcción Sintáctica
Traducción Semántica
Tipo
Ejemplo
Tiempo de compilación
Tiempo de ejecución
Declaración de funciones
Function Sort (VAR v : TVector):INTEGER;
Adicionalmente al caso de procedimientos registrar que el tipo de retorno es INTEGER
Expresiones v[j] > v[j + 1];
Comprobar que v esta declarado previamente y que es de tipo TVector. Asegurarse de que las sub-expresiones son correctas y de tipos compatibles con el operador mayor que
Generar código para recuperar de memoria el valor de las sub-expresiones y aplicar la comparación entre ambos con los operadores del lenguaje de bajo nivel
Sentencia For
FOR j := 1 TO i DO
Comprobar quela expresión 1 e i son de tipo INTEGER. Comprobar que j ha sido previamente declarada como una variable de tipo INTEGER
Generar código para inicializar j a 1. Generar código de salto para iterar la ejecución del bloque dentro de FOR i veces. Generar código para actualizar a cada paso el valor de j a j+1
Análisis Semántico
Definiciones dirigidas por la sintaxis
Las...
Regístrate para leer el documento completo.