ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A.

Slides:



Advertisements
Presentaciones similares
ANALIZADOR SINTACTICO
Advertisements

Clasificación de los compiladores
Compiladores e intérpretes Análisis Sintáctico II
Compiladores e intérpretes
Compiladores e intérpretes Análisis Sintáctico III
Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
POLIMORFISMO UNIDAD 4.
Prototipo de compilador didáctico del lenguaje LC99
Lenguaje de programación Java
Polimorfismo Unidad 4.
Inner classes CAPITULO 8.
Compilador HTML David Morales Marco Jiménez Carlos Márquez
Capitulo 4 Excepciones.
Procesadores de Lenguajes I
Informática II Prof. Dr. Gustavo Patiño MJ
Aplicación del paradigma orientado a objetos
Traducción dirigida por la Sintaxis
Diseño y programación de
ANALISIS SINTACTICO DESCENDENTE
Teoría de lenguajes y compiladores
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
Medio de tele-comunicación
Modificadores.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Analizador Sintáctico Descendente
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Conceptos Objeto Clase Atributo / Método Encapsulamiento Mensaje
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
SCJP Sun Certified Programmer for Java 6
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Estructura de un programa en C
Diagramas de Clase Angela Carrillo R..
INGENIERIA EN SISTEMAS COMPUTACIONALES
Programación orientada a objetos
Clasificación de Gramáticas y Manejo de Errores
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Programación de Sistemas
Tema 1. Introducción y Conceptos Básicos
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Programación orientada a objetos
Tratamiento de excepciones
Preposición: suma= var1 + var2 + 10; Análisis Léxico El analizador léxico lee los caracteres del programa fuente, y verifica que correspondan a una secuencia.
Herencia y Clases Abstractas
HERENCIA.
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
Programación orientada a objetos Capítulo 9 Algo mas sobre herencias.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Programación de Sistemas
PHP con Bases de Datos Tema 9 Programación Orientada a Objetos
Conceptos y Lenguaje Imperativo
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

ANALIZADOR SEMANTICO DIANA CAROLINA CASTAÑO YANCI VIVIANA CASTRO PEDRO LUIS FLÓREZ SANTIAGO GUTIÉRREZ A

ANALIZADOR SEMANTICO Un analizador semántico es un programa que recibe como entrada un árbol sintáctico abstracto y hace el chequeo de tipos, de herencia, y produce las tablas de símbolos correspondientes para cada clase, método y bloque del árbol. El chequeo de tipos y de herencia asegura que el programa ya se puede compilar sin errores y aunque no necesariamente asegura que el programa tiene sentido, si asegura que las operaciones descritas se pueden ejecutar.

OBJETIVO Construir un analizador semántico en python, que imprima la tabla de tipos, y las tablas de símbolos de cada clase, método o bloque.

METODOLOGIA La construcción del analizador semántico empezó con un estudio de las tablas de símbolos y el chequeo de tipos en internet. En el archivo SymTam.py, primero se creó el objeto tabla que representa una tabla de símbolos, que recibe el nombre de la tabla, el padre, y el tipo. También se creó un objeto entrada que representa una entrada de dicha tabla.

jerarquía de la tabla de símbolos La tabla principal de tipos. La tabla principal de métodos estáticos. Cada clase, método, y bloque tiene su propia tabla.

chequeos semánticos que no son chequeos de tipo Se chequea que cada programa tenga un solo método main, y que sea estático. Se chequea que ningún identificador este redefinido en una clase o sus subclases o como parámetro de método, o que si es una variable local que no tenga el mismo nombre de otra variable local de la misma clase, ni de los parámetros, ni de los campos de la clase en la que esta ni de sus superclases.

Se chequea que toda función redefinida tenga la misma forma que la función de sus clases padre. Se chequea que cada método que tenga tipo de retorno, llegue por todas sus derivaciones a un retorno. Se chequea que los break/continue se hagan dentro de un ciclo. Se chequea que un bloque de if, else o de while no sea una sola declaración de campo. Se chequea que la clase Libary no se instancie. Se chequea que el objeto this no sea llamado en una clase estática.

DIFICULTADES En general toda la entrega fue difícil porque no hubo tiempo de explicar muchas cosas en clase, pero con la ayuda de los recursos de internet se pudo completar.

PRUEBAS Las pruebas se hicieron sobre archivos construidos especialmente para probar los tipos, uno con todas las posibilidades dadas en las especificaciones llamado bueno.mj y otro con todos los errores de dichas posibilidades llamado malo.mj. También usamos un archivo llamado arreglos.mj que se bajo de la pagina del profesor

EJEMPLO