Análisis semántico: Comprobación de tipos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Análisis semántico: Comprobación de tipos"

Transcripción

1 Análisis semántico: Comprobación de tipos Expresiones de tipos, sistemas de comprobación de tipos, equivalencia, resolución de sobrecargas y unificación. Introducción Objetivo de comprobación estática: Establecer en tiempo de compilación si el programa fuente sigue las convenciones sintácticas y semánticas del lenguaje. Ejemplos de comprobación estática: Comprobaciones de tipos Comprobaciones del flujo de control Comprobaciones de unicidad Comprobaciones relacionadas con nombres

2 Sistemas de tipos Cada construcción de un lenguaje tiene asociado un tipo: Expresiones. Funciones. Sentencias. El problema básico: Decidir un tipo único para cada uno de los elementos Estrategia: Reglas de tipos: Si ambos operandos de los operadores aritméticos de suma, sustracción y multiplicación son de tipo entero, entonces el resultado es de tipo entero. El resultado del operador unario & es un apuntador hacia el objeto al que se refiere el operando. Si el tipo del operando es, el tipo del resultado es puntero a. Construir expresiones de tipos, separando: Tipos básicos. Tipos construidos. Expresiones de tipos El tipo de una construcción del lenguaje se denotará mediante expresiones de tipo Definición de expresión de tipo: Un tipo básico es una expresión de tipo. boolean, char, integer, real, error_tipo, vacío. El nombre de un tipo es una expresión de tipo Un constructor de tipos aplicado a una expresión de tipo es una expresión de tipo Las expresiones de tipo pueden contener variables cuyos valores son expresiones de tipo

3 Constructores de tipos Matrices: Si T es una expresión de tipo, array(i,t) es una expresión de tipo, donde I es un conjunto de índices, y T el tipo de los elementos Productos: Si T 1 y T 2 son expresiones de tipo, su producto cartesiano, T 1 T 2 es una expresión de tipo Registros: el constructor record se aplicará a una tupla formada con nombres de campos y tipos de campos. Punteros: Si T es una expresión de tipo, entonces pointer(t) es una expresión de tipo Funciones: transformaciones de un dominio de tipo D a un rango de tipo R. La expresión de tipo D R indicará el tipo de la función Sistemas de tipos: Reglas Definición Sistema de Tipos: Serie de reglas para asignar expresiones de tipo a las distintas partes de un programa. Un comprobador de tipos implanta un sistema de tipos Comprobación estática vs. Dinámica: Cualquier verificación puede realizarse dinámicamente Un sistema de tipos seguro elimina la necesidad de comprobar dinámicamente errores de tipo Un lenguaje es fuertemente tipado si su compilador puede garantizar que los programas que acepte se ejecutarán sin errores de tipo Errores de tipos: El compilador debe informar de la naturaleza y posición del error Es conveniente que se recupere de los errores para comprobar el resto de la entrada

4 Comprobador de tipos sencillo Un lenguaje simple y prototípico para representar el problema de especificación de tipos: P D ; E D D ; D id : T T char integer array [ num ] of T T E literal num id E mod E E [ E ] E Comprobador de tipos sencillo Parte de un esquema de traducción que guarda el tipo de un identificador: P D ; E D D ; D D id : T T char T integer T T 1 T array [ num ] of T 1 {añadetipo(id.entrada, T.tipo)} {T.tipo:=char} {T.tipo:=integer} {T.tipo:=pointer(T 1.tipo)} {T.tipo:=array(1..num.val, T 1.tipo)}

5 Comprobador de tipos sencillo Comprobación de tipos en las expresiones E literal E num E id E E 1 mod E 2 E E 1 [ E 2 ] E E 1 {E.tipo:=char} {E.tipo:=integer} {E.tipo:=busca(id.entrada)} {E.tipo:=if E 1.tipo = integer and E 2.tipo = integer then integer else error_tipo} {E.tipo:=if E 2.tipo = integer and E 1.tipo = array(s,t) then t else error_tipo} {E.tipo:=if E 1.tipo = pointer(t) then t else error_tipo} Comprobador de tipos sencillo Comprobación de tipos en las proposiciones T boolean (gramática aumentada) S id := E {S.tipo := if id.tipo = E.tipo then vacío else error_tipo} S if E then S 1 {S.tipo:=if E.tipo = boolean then S 1.tipo else error_tipo} S while E do S 1 {S.tipo:=if E.tipo = boolean then S 1.tipo else error_tipo} S S 1 ; S 2 {S.tipo:= if S 1.tipo = vacío and S 2.tipo = vacío then vacío else error_tipo}

6 Comprobador de tipos sencillo Comprobación de tipos de funciones E E ( E ) (gramática aumentada) E E 1 ( E 2 ) {E.tipo:= if E 2.tipo = s and E 1.tipo = s t then t else error_tipo} Equivalencia de expresiones de tipos Equivalencia: Identidad (estructural sin constructores) Estructural De nombre (nombres para tipos) Equivalencia estructural en las expresiones de tipos: Dos expresiones son, o bien el mismo tipo básico, o están formadas aplicando el mismo constructor a tipos estructuralmente equivalentes Dos expresiones de tipos son estructuralmente equivalentes, si y sólo si, son idénticas

7 Equivalencia de expresiones de tipos Comprobación de la equivalencia estructural de dos expresiones de tipos s y t. function equivest(s,t): boolean; begin if s y t son el mismo tipo básico then return true else if s=array(s 1, s 2 ) and t=array(t 1, t 2 ) then return equivest(s 1,t 1 ) and equivest(s 2,t 2 ) else if s=s 1 s 2 and t=t 1 t 2 then return equivest(s 1,t 1 ) and equivest(s2,t2) else if s=pointer(s 1 ) and t=pointer(t 1 ) then return equivest(s 1,t 1 ) else if s=s 1 s 2 and t=t 1 t 2 then return equivest(s 1,t 1 ) and equivest(s 2,t 2 ) else return false end Equivalencia de expresiones de tipos Nombres en expresiones de tipos: Se permite dar nombres a las expresiones de tipo y que estos nombres aparezcan en expresiones de tipos donde previamente sólo existían tipos básicos Equivalencia de nombre: dos expresiones de tipo tienen equivalencia de nombre, si y sólo si, son idénticas Equivalencia estructural: dos expresiones de tipos son estructuralmente equivalentes si representan dos expresiones de tipos estructuralmente equivalentes cuando todos los nombres han sido sustituidos

8 Equivalencia de expresiones de tipos Ciclos en las representaciones de tipos Los nombres de tipo definidos recursivamente se pueden sustituir si se quieren introducir ciclos en el grafo de tipos Ejemplo: type enlace = nodo nodo = record info:integer siguiente:enlace end; Equivalencia de expresiones de tipos Ciclos en las representaciones de tipos nodo=record info integer siguiente pointer nodo

9 Equivalencia de expresiones de tipos Ciclos en las representaciones de tipos nodo=record info integer siguiente pointer Conversiones de tipos Coerciones: La conversión de un tipo a otro es implícita si el compilador la va a realizar automáticamente. Estas conversiones se llaman coerciones La conversión es explícita si el programador debe escribir algo para motivar la conversión (operador). Para un comprobador de tipos, las conversiones explícitas se tratan como aplicaciones de función, por lo que no presentan problemas nuevos.

10 Sobrecarga de funciones y operadores Símbolo sobrecargado: es aquél que tiene distintos significados dependiendo de su contexto La sobrecarga se resuelve cuando se determina un significado único para un caso de símbolo sobrecargado La solución de sobrecarga se denomina identificación de operadores Sobrecarga de funciones y operadores La sobrecarga implícita (operadores aritméticos, generalmente) es posible resolverla mirando a los operandos La sobrecarga explícita se resolverá (si se puede) al observar el contexto en el que se encuentra

11 Sobrecarga de funciones y operadores Ejemplo de sobrecarga (operador de multiplicación): integer integer integer integer integer complex complex complex complex La expresión 3*5 podrá tener tipo integer o complex En 2*(3*5), 3*5 sólo podrá tener tipo integer En z*(3*5), 3*5 sólo podrá tener tipo complex Sobrecarga de funciones y operadores Cada subexpresión de una expresión tendrá un conjunto posible de tipos (cada uno de los tipos se denomina tipo factible) Se resuelve la sobrecarga (en una expresión) si puede determinarse un tipo único para la expresión y cada una de sus subexpresiones

12 Sobrecarga de funciones y operadores Solución de la sobrecarga (2 pasos): Se determina un tipo único para la expresión completa Se comprueba cada subexpresión comprobando si a partir del tipo único, el tipo de la subexpresión es o no único Sobrecarga de funciones y operadores Sobrecarga de operadores no resuelta 2*(3*5) con la sobrecarga anterior en la multiplicación E {i,c} E{i} *:{i i i, E{i,c} i i c, 2{i} c c c} E{i} *:{i i i, E{i} i i c, 3{i} c c c} 5{i}

13 Sobrecarga de funciones y operadores Sobrecarga de operadores resuelta 2+(3*5) con la sobrecarga anterior en la multiplicación E {i} {i} E{i} +:{i i i} E{i,c} 2{i} E{i} *:{i i i, E{i} i i c, 3{i} c c c} 5{i} Funciones polimórficas Una función polimórfica es aquella que puede ejecutarse con argumentos de tipos distintos fun longitud(aplista)= if null(aplista) then 0 else longitud(tl(aplista))+1; longitud([ dom, lun, mar ])=3 longitud([10, 9, 8])=3

14 Funciones polimórficas Las variables que representan expresiones de tipos permiten considerar tipos desconocidos en: funciones polimórficas comprobación del uso consistente de identificadores en un lenguaje que no exija que se declaren antes de ser utilizados (si siempre se usa igual, se garantiza un uso consistente y puede inferirse su tipo). Funciones polimórficas Inferencia de tipos: problema de determinar el tipo de una construcción del lenguaje a partir del modo en que se usa Las técnicas para inferencia de tipos pueden aplicarse a programas en lenguajes como C y Pascal para completar información sobre los tipos que faltan en el momento de la compilación

15 Funciones polimórficas Notación para tipos polimórficos function desref(p); begin end; return p El tipo de la función es α.pointer(α) α Una expresión de tipo que contenga un símbolo se considerará un tipo polimórfico Funciones polimórficas Un lenguaje con funciones polimórficas P D ; E D D ; D id : Q Q variable_de_tipo.q T T T T T T constructor_unario ( T ) tipo_basico variable_de_tipo ( T ) E E ( E ) E, E id

16 Funciones polimórficas Programa generado por la gramática desref: α.pointer(α) α q: pointer(pointer(integer) desref(desref(q)) Es correcta la expresión a partir de la declaración de tipos? Funciones polimórficas Diferencias para comprobación de tipos entre funciones polimórficas y ordinarias: Casos diferentes de una función polimórfica en la misma expresión no deben tener necesariamente argumentos del mismo tipo Ejemplo: desrefe y desrefi en desrefe(desrefi(q))

17 Funciones polimórficas Diferencias para comprobación de tipos entre funciones polimórficas y ordinarias : Reconsideración de la equivalencia de tipos (unificación: de manera informal, determinación de si s y t pueden ser estructuralmente equivalentes sustituyendo las variables en s y t por expresiones de tipo) Ejemplo: pointer(ai)=pointer(pointer(integer)), si ai se sustituye por pointer(integer) Funciones polimórficas Diferencias para comprobación de tipos entre funciones polimórficas y ordinarias: Se necesita un mecanismo para registrar el efecto de la unificación de dos expresiones. Si una variable a representa al tipo t, entonces a debe continuar representando a t durante toda la comprobación de tipos

18 Funciones polimórficas Sustitución: transfomación de variables de tipo a expresiones de tipo Unificación: Dos expresiones de tipo t 1 y t 2 se unifican si existe alguna sustitución S tal que S(t 1 )=S(t 2 ). En la práctica, interesa el unificador más general, que es la sustitución que menos limitaciones exige a las variables dentro de las expresiones Funciones polimórficas Ejemplo de comprobación de tipos para desref(desref(q)) Expresión Tipo Sustitución q pointer(pointer(integer)) desref i pointer(α i ) α i desref i (q) pointer(integer) α i =pointer(integer) desref e pointer(α e ) α e desref e (desref i (q)) integer α e =integer

19 Funciones polimórficas Relación entre comprobación e inferencia de tipos function desref(p) begin return p end; Inferir el tipo de desref a partir del cuerpo de la función Unificación de desref(p) con return p Funciones polimórficas Relación entre comprobación e inferencia de tipos Conocimiento previo: EXPRESIÓN TIPO return pointer( χ ) χ δ δ Método: Evaluación ascendente de declaración y expresión (de las subexpresiones a la expresión)

20 Funciones polimórficas Relación entre la comprobación y la inferencia de tipos Expresión Tipo Sustitución p desref α β desref(p) χ β=α χ p α pointer(δ) δ p δ α=pointer(δ) Funciones polimórficas Relación entre la comprobación y la inferencia de tipos Expresión Tipo Sustitución return σ σ return p σ δ=σ desref (p) con return p χ σ=χ Realizando las sustituciones tenemos que el tipo inferido es: χ.pointer(χ) χ

Compiladores: Análisis Semántico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V.

Compiladores: Análisis Semántico. Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V. Compiladores: Análisis Semántico Pontificia Universidad Javeriana Cali Ingenieria de Sistemas y Computación Prof. Gloria Inès Alvarez V. Verificaciòn de tipos Se puede hacer en forma Estàtica: en tiempo

Más detalles

UNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido.

UNIDAD V. Analisis Semantico. 5.1 Introduccion. Analizador Semántico. Verifica que el significado de las construcciones del lenguaje tengan sentido. UNIDAD V Analisis Semantico 5.1 Introduccion Analizador Semántico. Ejemplo: Verifica que el significado de las construcciones del lenguaje tengan sentido. Tareas del analizador semántico: 1) Comprobación

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

ANÁLISIS SEMÁNTICO VERIFICACIÓN DE TIPOS

ANÁLISIS SEMÁNTICO VERIFICACIÓN DE TIPOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Verificación de Tipos

Verificación de Tipos Verificación de Tipos CI4721 Lenguajes de Programación II Ernesto Hernández-Novich Universidad Simón Bolívar Copyright 2012-2016 Hernández-Novich (USB) Verificación de Tipos 2016 1 / 25 Verificación

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático v1.2 c 2005 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

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

ANÁLISIS SEMÁNTICO. Especificación formal: Semántica Operacional, semántica denotacional, semántica Axiomática, Gramáticas con Atributos. ANÁLISIS SEMÁNTICO El análisis semántico dota de un significado coherente a lo que hemos hecho en el análisis sintáctico. El chequeo semántico se encarga de que los tipos que intervienen en las expresiones

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

Generación de Código Intermedio

Generación de Código Intermedio Generación de Código Intermedio Programación II Margarita Álvarez Generación de código intermedio Con la generación de código intermedio se inicia la tarea de síntesis. Aunque un programa fuente se puede

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático c 2001 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

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

Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico

Más detalles

COMPILADORES. Tema 4. Análisis semántico

COMPILADORES. Tema 4. Análisis semántico COMPILADORES Tema 4. Análisis semántico Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. 37 dtorres@mixteco.utm.mx Contenido 1. Funcionalidad del

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Contents 1 Tipo subrango 2 1.1 Subrangos de enteros......................... 2 1.2 Subrangos de caracteres....................... 2 1.3 Operaciones con subrangos.....................

Más detalles

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion UNIDAD IV Analisis Sintactico 4.1 Introduccion Sintaxis significa estructura del orden de las palabras en una frase. La tarea del analisis sintactico es revisar si los símbolos aparecen en el orden correcto

Más detalles

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA

PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA PRÁCTICA DE PROCESADORES DE LENGUAJE EVALUACIÓN ORDINARIA CURSO 2009/2010 OBJETIVO DE LA PRÁCTICA El objetivo de la práctica es desarrollar un compilador utilizando las herramientas flex y bison y el lenguaje

Más detalles

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

Análisis Semántico y Traducción Dirigida por la Sintaxis. Programación II Margarita Álvarez 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

Más detalles

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

UNIDAD IV Programación Funcional. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM UNIDAD IV Programación Funcional Porqué? 2 Introducción Porque aprender programación funcional? - Recursión - Abstracción funcional - Funciones de primer orden Estos conceptos se han incorporado en la

Más detalles

Qué es el análisis semántico?

Qué es el análisis semántico? Análisis semántico Estrella Pulido Cañabate Qué es el análisis semántico? Fase del compilador en la que se comprueba la corrección semántica del programa Conjunto de subrutinas independientes que pueden

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

Arreglos y Subrangos

Arreglos y Subrangos Arreglos y Subrangos Programación 1 InCo - FING Programación 1 Arreglos y Subrangos InCo - FING 1 / 27 Tipos de datos definidos por el programador Programación 1 Arreglos y Subrangos InCo - FING 2 / 27

Más detalles

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2017

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2017 Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2017 Paradigma Funcional FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2)

Más detalles

EXAMENES RESUELTOS DE PROGRAMACION I

EXAMENES RESUELTOS DE PROGRAMACION I EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994, Reserva Soluciones no oficiales 1.- Determinar los valores reales válidos en Modula-2: a) 56.2F-54 y 2.2

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Ernesto Hernández-Novich Copyright c 2006-2010 Tipos de Datos El computador sólo manipula secuencias de bits. Los lenguajes de programación ofrecen

Más detalles

Introducción a la Programación

Introducción a la Programación 0,25 puntos cada pregunta 1. Observa el siguiente esquema de código. Cuándo se ejecuta Instrucción4? IF Condición1 THEN Instrucción1 ELSE IF Condición2 THEN Instrucción2 ELSE IF Condición3 THEN Instrucción3;

Más detalles

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2. Índice del capítulo Capítulo 4. Expresiones Lenguajes de Programación Capítulo 4. Expresiones 1. Carlos Ureña Almagro 2. Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO CÓDIGO DE TRES DIRECCIONES

GENERACIÓN DE CÓDIGO INTERMEDIO CÓDIGO DE TRES DIRECCIONES Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2018

Paradigma Funcional Caso de estudio: ML. Lenguajes de Programación 2018 Paradigma Funcional Caso de estudio: ML Lenguajes de Programación 2018 FUNCIÓN: Mapeo de un dominio en un rango El mapeo se puede describir por medio de una EXPRESIÓN f(1) = 2 f(2) = 3 Enumeración f(x)

Más detalles

Lenguajes funcionales: λ-cálculo

Lenguajes funcionales: λ-cálculo Lenguajes funcionales: λ-cálculo λ-cálculo (Church 1933) Cálculo para el estudio formal del comportamiento de las funciones Sintaxis: λ expresiones Reglas de reducción de λ expresiones Método matemático

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA) Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Análisis semántico. Análisis semántico. Índice (I)

Análisis semántico. Análisis semántico. Índice (I) Análisis semántico Índice (I) Marina de la Cruz Alfonso Ortega Objetivo del análisis semántico Decisiones para la construcción de un analizador semántico Análisis semántico con Bison Nivel de indirección

Más detalles

Lenguajes de Programación. Capítulo 4. Expresiones.

Lenguajes de Programación. Capítulo 4. Expresiones. Lenguajes de Programación. Capítulo 4. Expresiones. Carlos Ureña Almagro Curso 2011-12 Contents 1 Introducción 2 2 Literales 5 2.1 Literales tipos primitivos......................................... 5

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada

Más detalles

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS Programación en Fortran Valentín Moreno ÍNDICE 1. Subprogramas 2. Funciones 3. Subrutinas 2 3 1. SUBPROGRAMAS 1. SUBPROGRAMAS Si necesitamos usar con frecuencia

Más detalles

Tema: Análisis Semántico

Tema: Análisis Semántico Compiladores. Guía 7 1 Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Tema: Análisis Semántico Contenido En esta guía se desarrollará una tabla de símbolos y se asociará al analizador

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

Más detalles

Introducción a Haskell. Cecilia Manzino

Introducción a Haskell. Cecilia Manzino Paradigmas de programación Un paradigma de programación representa un estilo particular o filosofía para la construcción del software. Los más comunes dan lugar a los siguientes tipos de programación:

Más detalles

Compiladores e Intérpretes Análisis Semántico IV

Compiladores e Intérpretes Análisis Semántico IV 1 Compiladores e Intérpretes Análisis Semántico IV Sebastian Gottifredi 2018 Repaso 2 Repaso El análisis semántico es el encargado validar y entender el significado del programa Para esto el analizador

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

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

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR

Tipos y Estructuras de Control. Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Tipos y Estructuras de Control Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Datos: variables y constantes Tipos básicos: entero, real, char, lógico Estructuras de control

Más detalles

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse

Una lista de operadores que pueden o no sobrecargarse es la siguiente: Operadores que pueden sobrecargarse La sobrecarga de operadores, aunque puede ser una capacidad exótica, la mayoría de personas las usa implícita y regularmente se valen de los operadores sobrecargados. Por ejemplo, el operador de suma (+)

Más detalles

UNIDAD 2 Descripción de un programa

UNIDAD 2 Descripción de un programa Descripción de un programa Estructura general de un programa. Elementos básicos. Tipos de datos simples: enteros, reales y carácter. Representación de datos en memoria. Operaciones sobre tipos de datos

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Compuestos Ernesto Hernández-Novich Copyright c 2006-2010 Registros Registros agrupan datos de tipos heterogéneos para almacenarlos y manipularlos

Más detalles

Índice general 7. Presentación 15

Índice general 7. Presentación 15 ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Diseño de compiladores Recordando la clase anterior

Diseño de compiladores Recordando la clase anterior Diseño de compiladores Recordando la clase anterior Control de Tipos public class Clase1 implements Interfaz1 private string entero1; void metodo1() int[] x = new string; x[5] = entero1 * y; void metodo1()

Más detalles

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 6

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 6 UNIVRIDD NCIONL D DUCCIÓN DITNCI scuela Técnica uperior de Ingeniería Informática Procesadores de Lenguajes Tema 6 s generación de código Javier Vélez Rees jvelez@lsi.uned.es Objetivos del Tema prender

Más detalles

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Prof. Montserrat Serrano Montero ÍNDICE Tipos de datos El tipo abstracto

Más detalles

AMBIENTES DE COMPILACION

AMBIENTES DE COMPILACION AMBIENTES DE COMPILACION Los compiladores a menudo producen como resultado del análisis semántico, una forma de representación intermedia del código fuente. Hoy en día, es cada vez más común que, en ambientes

Más detalles

Análisis semántico I Traducción dirigida por la sintaxis

Análisis semántico I Traducción dirigida por la sintaxis Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis semántico I Traducción dirigida por la sintaxis Javier Vélez Reyes

Más detalles

FUNDAMENTOS DE OBJECT PASCAL

FUNDAMENTOS DE OBJECT PASCAL FUNDAMENTOS DE OBJECT PASCAL 1. ASPECTOS GENERALES DE LA SINTAXIS Los bloques de código quedan delimitados por y end. Se usa punto y coma como separador de sentencias de código. Comentarios: - ias líneas:

Más detalles

Tema 2: Análisis léxico

Tema 2: Análisis léxico Tema 2: Análisis léxico Procesamiento de Lenguajes Dept. de Lenguajes y Sistemas Informáticos Universidad de Alicante Procesamiento de Lenguajes Tema 2: Análisis léxico 1 / 21 Fundamentos del análisis

Más detalles

16 Análisis sintáctico I

16 Análisis sintáctico I 2 Contenido Recordando la estructura de un compilador Recordando el análisis léxico l análisis sintáctico Comparación con el análisis léxico l Rol del Parser Lenguajes de programación Gramáticas structura

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso. Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS

GENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

EXAMENES RESUELTOS DE PROGRAMACION I

EXAMENES RESUELTOS DE PROGRAMACION I EXAMENES RESUELTOS DE PROGRAMACION I Comentarios por Jose Antonio Vaqué EXAMEN DE septiembre 1994 Soluciones no oficiales 1.- Cuál de las siguientes sentencias es incorrecta?: VAR A : ARRAY [0..3] OF ARRAY

Más detalles

Java posee dos grandes categorías de tipos para las variables:

Java posee dos grandes categorías de tipos para las variables: Declaración identificador tipo int i; i entero String s; s referencia a string int a[]; a referencia a arreglo de enteros int[] b; b referencia a arreglo de enteros Java posee dos grandes categorías de

Más detalles

Estructura de Datos y de la Información

Estructura de Datos y de la Información Universidad Rey Juan Carlos Curso 2009/10 Ingeniería Técnica en Informática de Gestión Estructura de Datos y de la Información Examen Final Junio 2010 Fecha: 24-6-2010 Soluciones Ejercicio 1. (Puntuación

Más detalles

Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas

Algorítmica y Lenguajes de Programación. Punteros Introducción a estructuras dinámicas Algorítmica Lenguajes de Programación Punteros Introducción a estructuras dinámicas Punteros estructuras dinámicas. Introducción! Las variables globales pertenecen al programa princil eisten desde que

Más detalles

Un. VI. Generador de código intermedio.

Un. VI. Generador de código intermedio. Un. VI. Generador de código intermedio. La administración de la memoria se da en esta etapa. Se debe considerar tanto la memoria estática como dinámica, y en esta se utilizan generalmente pilas. Los lenguajes

Más detalles

Unidad VI Generación de Código Intermedio. M.C. Juan Carlos Olivares Rojas

Unidad VI Generación de Código Intermedio. M.C. Juan Carlos Olivares Rojas Unidad VI Generación de Código Intermedio M.C. Juan Carlos Olivares Rojas Agenda 6.1 Lenguajes intermedios. 6.2 Notaciones. 6.2.1 Infija. 6.2.2 Postfija. 6.2.3 Prefija. 6.3 Representación de código intermedio.

Más detalles

Procesadores de lenguaje Tema 7 Generación de código intermedio

Procesadores de lenguaje Tema 7 Generación de código intermedio Procesadores de lenguaje Tema 7 Generación de código intermedio Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Representaciones intermedias Código de 3 direcciones Cuádruplas

Más detalles

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante. Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una

Más detalles

ANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS

ANÁLISIS SEMÁNTICO GRAMÁTICAS DE ATRIBUTOS Y TIPOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani Informática JavaScript: Lenguaje de programación Fco J. Martín Mateos Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal:

Más detalles

Programación funcional

Programación funcional Programación funcional Inferencia de tipos manual para programas Haskell J. Sánchez Hernández Enero de 2007 El sistema de tipos de Haskell Es una variante del propuesto R. Milner en 1978 (con antecedentes

Más detalles

Tema 1 Testing Estructurado

Tema 1 Testing Estructurado Tema 1 Testing Estructurado 2da Parte Verificación y Validación de Software UNS 1 Contenido Fundamentos de Análisis Ejecución Simbólica Uso de Ejecución Simbólica Verificación y Validación de Software

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Verificación de Tipos Ernesto Hernández-Novich Copyright c 2006-2010 Verificación de Tipos Proceso que permite asegurar que un programa obedece las reglas de compatibilidad

Más detalles

Introducción. El proceso de traducción

Introducción. El proceso de traducción Toda compilación es un proceso de transformación paulatina que convierte un programa escrito en un lenguaje fuente de alto nivel en otro programa escrito en un lenguaje objeto de bajo nivel. Ese proceso

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. Introducción a la Programación Orientada a Objetos 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 independiente de la arquitectura de la computadora

Más detalles

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

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison 13048- LABORATORIO DE PROCESADORES DE LENGUAJE Curso: 2011-2012 Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison Se trata de realizar, mediante el generador de analizadores léxicos FLEX

Más detalles

Análisis lógico Cálculo de proposiciones

Análisis lógico Cálculo de proposiciones Sintaxis Semántica Sistemas de demostración Análisis lógico Cálculo de proposiciones Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@ciencias.unam.mx Página Web: www.matematicas.unam.mx/fhq

Más detalles

JavaScript: Lenguaje de programación

JavaScript: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal: 45, -43 Con base octal: 043, -054 Con

Más detalles

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3)

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3) Definición de la sintaxis (1) Gramática independiente del contexto: tiene cuatro componentes: Un conjunto de componentes léxicos, denominados símbolos terminales. Un conjunto de no terminales. Un conjunto

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España.

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España. Estructura de Datos y de la Información Tema 1: Gestión dinámica de la memoria Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores

Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores Facultad de Ingeniería de Sistemas Lenguajes y Aspectos Formales (Parte 2) 2007 1 Derivaciones El proceso de búsqueda de un árbol sintáctico para una cadena se llama análisis sintáctico. El lenguaje generado

Más detalles

Tecnología de la Programación

Tecnología de la Programación Tecnología de la Programación Semántica Operacional David Cabrero Souto Facultad de Informática Universidade da Coruña Curso 2007/2008 Verificación formal Recordar descriptores BOE: Diseño de algoritmos

Más detalles

ANEXO XVII DE LA RESOLUCION N

ANEXO XVII DE LA RESOLUCION N Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:

Más detalles

Resolución de Problemas y Algoritmos

Resolución de Problemas y Algoritmos RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS CLASE 3 Definición y compatibilidad de tipos de datos. Sentencia condicional CASE. Luciano H. Tamargo http://cs.uns.edu.ar/~lt Depto. de Ciencias e Ingeniería de la

Más detalles

1. Acciones en Yacc. %{ #include <stdio.h> yyerror (char *s) { fprintf (stderr, %s\n, s) ; } %} %% : S \n {printf ( Correcto\n );} ; : ( S ) S

1. Acciones en Yacc. %{ #include <stdio.h> yyerror (char *s) { fprintf (stderr, %s\n, s) ; } %} %% : S \n {printf ( Correcto\n );} ; : ( S ) S El generador de analizadores sintácticos Yacc III Teoría de autómatas y lenguajes formales Alma María Pisabarro Marrón (alma@infor.uva.es) Universidad de Valladolid 1. Acciones en Yacc Las acciones en

Más detalles

Curso de Java Introducción a la Programación II

Curso de Java Introducción a la Programación II Curso de Java Introducción a la Programación II Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Tipos Java 2 Decalaración de variables 3 Operadores aritméticos Índice

Más detalles

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente:

EJERCICIO 2 (3 PUNTOS) A) Sea el árbol binario AVL de la figura siguiente: B) Dada la estructura de la figura siguiente: ASIGNATURA TITULACIÓN APELLIDOS ESTRUCTURA DE DATOS Y DE LA INFORMACIÓN EJERCICIO 1 (3 PUNTOS) GRUPO CURSO CONVOCATORIA NOMBRE 23 / 24 EXTRAORDINARIA- SEPTIEMBRE CALIFICACIÓN Dado el tipo abstracto de

Más detalles

ANÁLISIS SINTÁCTICO I GRAMÁTICAS

ANÁLISIS SINTÁCTICO I GRAMÁTICAS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Operadores y Expresiones

Operadores y Expresiones Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los

Más detalles

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS A.- ASPECTOS FUNDAMENTALES DEL CÓDIGO ORIENTADO A OBJETOS MÓDULOS DE CÓDIGO: El código en Visual Basic se almacena en módulos. Hay tres tipos de módulos: de formulario,

Más detalles

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática

Análisis léxico. Formalización y desarrollo. Procesadores de Lenguajes. Ingeniería Técnica superior de Ingeniería Informática Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis léxico Formalización y desarrollo Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Procesadores de Lenguajes. Análisis sintáctico. Gramáticas libres de contexto

Procesadores de Lenguajes. Análisis sintáctico. Gramáticas libres de contexto Procesadores de Lenguajes Ingeniería Técnica superior de Ingeniería Informática Departamento de Lenguajes y Sistemas informáticos Análisis sintáctico Gramáticas libres de contexto Javier Vélez Reyes jvelez@lsi.uned.es

Más detalles

Introducción a OCaml. October 19, 2015

Introducción a OCaml. October 19, 2015 Introducción a OCaml October 19, 2015 OCaml: introducción Es un dialecto de ML. Lenguaje de programación funcional. Fuertemente tipado. Con inferencia de tipos. Polimórfico. [Página oficial: http://www.ocaml.org/

Más detalles

1.2.4 Listas enlazadas

1.2.4 Listas enlazadas 1.2.4 Listas enlazadas Las listas enlazadas son tipos de datos dinámicos que se construyen con nodos. Un nodo es un registro con al menos, dos campos, uno de ellos contiene las componentes y se le denomina

Más detalles

Tipos en Haskell. Cecilia Manzino

Tipos en Haskell. Cecilia Manzino Tipos Tipo: conjunto de valores asociados a operaciones. Ejemplos: enteros, caracteres, booleanos, funciones de enteros a enteros. Sirven para: detectar errores antes de la evaluación especificar programas

Más detalles