INGENIERIA EN SISTEMAS COMPUTACIONALES

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Filminas Segunda semana
Clasificación de los compiladores
Compiladores e intérpretes Análisis Sintáctico II
¿Compilador ? Es un traductor que convierte un texto escrito en un lenguaje fuente y lo traduce a un programa objeto en código máquina.
Prototipo de compilador didáctico del lenguaje LC99
Fundamentos de programación
Repaso para la construcción del intérprete 2012
Unidad 1. Introducción al proceso de compilación.
Informática II Prof. Dr. Gustavo Patiño MJ
1.2 Sintaxis del lenguaje Java.
Temas Operaciones básicas Operaciones Operadores Aritméticos
Teoría de lenguajes y compiladores
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Tema 3. Optimización de Código
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.
APLICACIONES DE PILAS Estructuras de Datos.
Tema 6: Clases Antonio J. Sierra.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
TRADUCTOR DE UN PROGRAMA
Fundamentos de Programación
Semana 5 Subprogramas..
M.C. Meliza Contreras González
M.C. Juan Carlos Olivares Rojas
Tema 2: Los tipos de datos
FUNDAMENTOS DE PROGRAMACION
ANALISIS SINTACTICO Parte I
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Computación II Unidad IV Funciones y Módulos. Objetivos: –Comprender como construir programas en forma modular partiendo de pequeñas partes conocidas.
FORMA INTERNA DE REPRESENTAR
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Informática Ingeniería en Electrónica y Automática Industrial
NVA-LNG1 3. SENTENCIAS. NVA-LNG2 Asignación Es una sentencia que almacena: el valor del argumento ubicado a la derecha del símbolo que la representa En.
EXPRESIONES Y SENTENCIAS
RESTRICCIONES Ing. Carolina Moreno Departamento de Sistemas Facultad de Electrónica y Telecomunicaciones Universidad del Cauca.
El Concepto de Tipo Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa. Toda variable tiene asociado un tipo.
Programación de Sistemas
Informática Ingeniería en Electrónica y Automática Industrial
COMPILADORES DIANA ROCIO OLAYA MESA.
INFORMATICA VII (Programación e implementación de sistemas)
1 Definición y Conversión de datos Agustín J. González ELO-329.
Unidad 1. Introducción a los Compiladores.
Términos algoritmo diseñar algoritmo implementar algoritmo
UNIVERSIDAD LATINA (UNILA)
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
INTRODUCCION A LA PROGRAMACION
Teoría de lenguajes y compiladores
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.
PRINCIPIOS DE PROGRAMACIÓN

El proceso de compilación
Fundamentos de Programación
Estructuras de Decisión
Lic. Carla Aguirre Montalvo
IV. GRAMÁTICAS DISTRIBUIDAS Y TABLAS DE SÍMBOLOS
Programación de Sistemas
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.
Informática Ingeniería en Electrónica y Automática Industrial
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
REGLAS PARA ELABORAR SEUDOCODIGOS Y DIAGRAMA DE FLUJO
1 Definición y Conversión de datos Agustín J. González ELO-329.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
Autómatas y Compiladores. Primera Semana. Ricardo Vargas Del Valle A35469.
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.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Transcripción de la presentación:

INGENIERIA EN SISTEMAS COMPUTACIONALES Lenguaje y autómatas II Unidad I 1.2. Acciones semánticas de un analizador sintáctico. 1.3. Comprobaciones de tipos en expresiones . Integrantes : Luis Felipe Mendoza Cruz 111080080 Martina del Carmen Huchin Canche 111080069 Docente : Eduardo José González Ehuán

El análisis semántico se realiza después del sintáctico y es más difícil de formalizar que éste. 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.

1.2. Acciones semánticas de un analizador sintáctico. Dependiendo del tipo de sentencias, las acciones semánticas pueden agruparse en: • Sentencias de Declaración: completar la sección de tipos de la Tabla de Símbolos. • Sentencias “ejecutables”: realizar comprobaciones de tipos entre los operandos implicados. • Funciones y procedimientos: comprobar el número, orden y tipo de los parámetros actuales en cada llamada a una función o procedimiento.

• Identificación de variables: comprobar si identificador ha sido declarado antes de utilizarlo. • Etiquetas: comprobar si hay etiquetas repetidas y validación. • Constantes: comprobar que no se utilicen en la parte izquierda de una asignación. • Conversiones y equivalencias de tipo: verificación. • Sobrecarga de operadores y funciones: detectar y solventar.

La fase de análisis semántico revisa el programa fuente para tratar de encontrar errores semánticos y reúne la información sobre los tipos para la fase posterior de generación de código. En ella se utiliza la estructura jerárquica determinada por la fase de análisis sintáctico para identificar los operadores y operandos de expresiones y proposiciones.

1.3. Comprobaciones de tipos en expresiones . Verificación de tipos La verificación de los tipos de datos se hace asignando el valor de tipo de cada una de los componentes léxicos. Estos valores se comparan para verificar que los tipos de datos coincidan y sean congruentes, de lo contrario no se pueden realizar los cálculos.

Hay situaciones en las cuales se tiene un valor de un tipo dado y se desea almacenar ese valor en una variable de un tipo diferente. En algunos tipos es posible almacenar simplemente el valor sin una conversión de tipos; lo que se denomina conversión automática. A la conversión de tipos se le llama coerción o casting.

Conversión de Tipos Esto sólo es posible en algún lenguaje de programación, si el compilador reconoce que la variable destino tiene la suficiente precisión para contener el valor origen. En Java se puede almacenar un valor byte en una variable int, dado que este tipo de datos es de mayor precisión que el primero.

A esto se le llama ensanchamiento o promoción, dado que el tipo más pequeño se ensancha o promociona al tipo compatible más grande. Si por el contrario, se desea asignar un valor de variable int a una variable byte se necesita realizar una conversión de tipos explícita. En algunos casos se puede realizar la conversión pero se pueden perder datos, como por ejemplo al pasar un valor flotante a un entero.

A esto se le llama estrechamiento, dado que se estrecha explícitamente el valor para que quepa en el destino. La conversión de un tipo se realiza poniendo delante un nombre de tipo entre paréntesis, por ejemplo, (tipo) valor. Ejemplos de coerción: byte a; int b; a=(byte) b;

Comprobación de Tipos La comprobación ayuda a evitar la mayoría de los errores de programación. Ejemplos de comprobación de tipos: Para saber si el operador aplicado a los operadores es correcto. Existen dos tipos de comprobación: estática y dinámica.

Comprobaciones de tipos Comprobaciones de tipos. Un compilador debe informar de un error si se aplica un operador a un operando incompatible, por ejemplo, si se suman una variable tipo matriz y una variable de función. 

2.Comprobaciones del flujo de control.  Las proposiciones que hacen que el flujo del control abandone una construcción deben tener algún lugar a dónde transferir el flujo de control Por ejemplo, una proposición break en C hace que el control abandone la proposición que la engloba, while, for o switch más cercana si dicha proposición englobadora no existe, ocurre un error. 

3.Comprobación de unicidad: definir un objeto una sola vez. 4.Comprobaciones relacionadas con nombres. En ocasiones, el mismo nombre debe aparecer dos o más veces en un mismo bloque de instrucciones, el compilador debe comprobar que se utilice el mismo nombre en ambos sitios.

Comprobación estática Diferente de la dinámica (en runtime) Ejemplos Comprobación de tipos Incompatibilidad de operadores Flujo de control Exit Do, break, halt, while, next Unicidad Variables únicas en su ámbito

Más ejemplos: Nombres Begin transaction NNN --- Commit transaction NNN Comprobación dinámica es necesaria: tabla: array[0..255] of char; i: integer ¿Verificar i <= 255 estáticamente?

Sistemas de tipos Basado en: La noción de tipo Tipos básicos o primitivos Tipos construidos o referenciales Las reglas para asignar tipos ¿Suma de dos reales es un? ¿Concatenación de dos char es un?

Expresiones de tipos Un tipo básico Boolean, char, integer, long, float, etc. error_tipo El nombre de un tipo public class Telefono { int número; int internacional; } Constructores de tipos

Bibliografía Adilene Perez Reyes, A. G. (18 de Mayo de 2011). Analisis Semantico. Obtenido de http://compiladoresasignatura.blogspot.mx/2011/05/unidad-5-analisis-semantico.html Guevara, M. (s.f.). Acciones Semanticas. Obtenido de http://es.scribd.com/doc/128330225/1-2-Acciones-semanticas