Análisis Semántico y Traducción Dirigida por la Sintaxis. Programación II Margarita Álvarez

Documentos relacionados
PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas

PROGRAMA DE LABORATORIO SECCIÓN: ÁREA A LA QUE PERTENECE: POS-REQUISITO: AUXILIAR:

E Ú E +T T T Ú T * F F F Ú ( E ) NUM. Queremos calcular: Los pasos que seguiremos serán:

Tema 1.3. Un lenguaje mínimo y su procesador: Restricciones contextuales

Unidad I: Análisis semántico

Capítulo 5: Traducción Dirigida por Sintaxis

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos.

Unidad II: Análisis semántico

GRAMATICAS LIBRES DEL CONTEXTO

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Elementos de un programa en C

Tabla de Símbolos. Programación II Margarita Álvarez

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Tema 7. Generación de código

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Programación de Sistemas Depuradores (Debugger) MIS. Lizbeth Hdz. Glz.

Tema 3. Análisis sintáctico descendente

JavaCC Parte I. 1 Compiladores / Guía VII / Ciclo Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores.

2.2 Nombres, Ligado y Ámbito

Compiladores: Análisis Sintáctico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inés Alvarez V.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

Un. VI. Generador de código intermedio.

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

OPTIMIZACIÓN DE CÓDIGO

INICIACIÓN A LA PROGRAMACIÓN 1ª parte

GENERACIÓN DE CÓDIGO

FUNDAMENTOS DE INFORMÁTICA

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Estructuras de Datos Declaraciones Tipos de Datos

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Operadores y Expresiones

Aprender a desarrollar con JavaScript

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Lenguaje de programación C. Introducción

Procesamiento de documentos XML.

Procesadores de lenguaje Tema Análisis sintáctico (Parte I)

C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Profesor(a): M. A. Zeferino Galarza Hernández

Procesadores de Lenguaje

Instituto Tecnológico de Celaya

Agenda. BNF y EBNF Brevemente, lo necesario para especificar el lenguaje sobre el que vamos a trabajar.

Bases de Datos OTROS ASPECTOS MODELO E-R

Lenguajes de Programación. Juan Zamora O. Semestre II Nombres, Ambitos y Ligados

Fundamentos de programación

Guía práctica de estudio 05: Diagramas de flujo

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Expresiones y sentencias

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Elementos léxicos del lenguaje de programación Java

Procesadores de lenguaje Tema 6 La tabla de símbolos

Programación I Unidad III. Tema: Tipos, estructuras y uniones

Tecnología WEB: Desarrollo De Aplicaciones.

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

GENERACIÓN DE CÓDIGO INTERMEDIO

Tema 6: Teoría Semántica

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

INSTITUTO POLITÉCNICO NACIONAL

1. Computadores y programación

Elementos Diagramas de Clases Clase:

Tema: Tabla de Símbolos

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Apuntes de Lógica Proposicional

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Temario Programación Web para Web

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Ejercicios de Lógica Proposicional *

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

Isabelle como un lenguaje funcional

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programación. Test Autoevaluación Tema 3

Construcción de tablas de análisis sintáctico LL(1)

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Introducción al Lenguaje de Programación C

Introducción a compiladores. Universidad Autónoma de Aguascalientes Prof. Eduardo Serna-Pérez Correo-e: eduardo.serna@gmail.com

Sintaxis básica, variables y 7pos


Las Etapas de la Compilación

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Tema 3. Tipos de datos simples

UML Unifield Modeling Languaje

Las plantillas permiten definir funciones genéricas.

Manual de turbo pascal

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Código Intermedio. Compiladores II 1

Java para no Programadores

4. Operadores Operador asignación

Temas de Reflexión en el

2. Se puede aplicar a la representación intermedia un optimizador de código independiente de la máquina.

Fundamentos de Ciencias de la Computación Trabajo Práctico N 2 Lenguajes Libres del Contexto y Sensibles al Contexto Segundo Cuatrimestre de 2002

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

PROGRAMACION ORIENTADA A OBJETOS EN C++

Transcripción:

Análisis Semántico y Traducción Dirigida por la Sintaxis Programación II Margarita Álvarez

Análisis Semántico Comprobación estática Comprobación de tipos: la aplicación de los operadores y operandos deben ser compatibles. Comprobaciones del flujo del control: las proposiciones que hacen que se abandone el flujo del control de una construcción debe transferirse a otro punto. (break, exit) Comprobaciones de unicidad: hay situaciones en los que un objeto sólo puede definirse una vez exclusivamente. Las etiquetas de una sentencia case no deben repetirse. Comprobaciones relacionadas con nombre: el mismo nombre debe aparecer dos o más veces. En Ada el nombre que aparece en un bloque puede aparecer al principio y final, el compilador debe comprobar que se utiliza el mismo en ambos sitios.

Análisis Semántico Además de comprobar que un programa cumple con las reglas de la gramática, hay que comprobar que lo que se quiere hacer tiene sentido. Esta fase también modifica la tabla de símbolos y suele estar mezclada con la generación de código intermedio. Las gramáticas independientes del contexto no son suficientes para realizar el análisis semántico. Por ejemplo, no hay forma de comprobar si una variable ha sido definida ya, o si existe una determinada etiqueta. Es necesario definir un tipo de gramática más rica como las gramáticas de atributo.

Traducción dirigida por la sintaxis Se estudió dos notaciones: Expresiones Regulares para expresar la estructura léxica. Gramáticas libres de contexto para expresar la estructura sintáctica. Para las siguientes fases del compilador no existe una notación similar, se usa un formalismo llamado traducción dirigida por la sintaxis.

Traducción dirigida por la sintaxis Asocia información a la construcción del lenguaje. Atributos en los símbolos de la gramática. Los valores de los atributos se calculan mediante reglas semánticas asociadas a las producciones gramaticales. Existen dos notaciones para asociar reglas semánticas con producciones Las definiciones dirigidas por la sintaxis Los esquemas de traducción

Definiciones dirigidas por la sintaxis Cada símbolo tiene un conjunto de atributos asociados Atributo: una cadena, número, tipo, posición de memoria, etc. NombredeSímbolo.NombredeAtributo Cada producción A α tiene asociada un conjunto de acciones semánticas que se representan como una función: X.atr f (Y 1.atr,..., Y n.atr) Existen dos tipos de atributos: Atributo sintetizado: El valor a asignar a un nodo depende del valor de los nodos hijos. Atributo heredado: El valor de un nodo se pasa a un nivel inferior o igual en el árbol. Su valor depende del valor de los hermanos y del padre.

Definiciones dirigidas por la sintaxis Ejemplo calculadora: Sintetizados, Análisis Ascendente Producciones L E n E E + T E T T T * F T F F (E) F dígito Reglas semánticas Print(E.val) E.val = E.val + T.val E.val = T.val T.val = T.val * F.val T.val = F.val F.val = E.val F.val = dígito.valex Evaluación de la expresión 3 * 5 + 4

Definiciones dirigidas por la sintaxis Ejemplo declaración de tipos : Heredados Producciones D T L T int T real L L, id L id Reglas semánticas L.her = T.tipo T.tipo = int T.tipo = real L.her = L.her AgregarTipo(id.entrada,L.her) AgregarTipo(id.entrada,L.her) Real id 1, id 2, id 3

Esquema de traducción Un esquema de traducción es una gramática libre de contexto en la que se encuentran intercaladas en los lados derechos de las producciones, fragmentos de programas llamados acciones semánticas. X ab {accion();} b Notación complementaria donde las acciones se encuentran o bien intercaladas entre los símbolos de la parte derecha de las producciones, o bien al final de las mismas. Inserción de acciones semánticas al final de cada producción. S B1 B2 { B1.atr = 1; B2.atr = 2; } B x { print(b.atr); } Acciones semánticas intercaladas Proced procedure {CrearAmbito();} id Args Decl Sentencias;